node.js - 调试 SSR node.js 服务器端 VSCode
问题描述
我在尝试调试 SSR 反应应用程序(服务器端)时浪费了太多时间。我们正在从头开始构建一个应用程序,这是一个非常大的项目,因此调试代码非常重要。
服务器的 webpack 配置如下:
const path = require('path');
const merge = require('webpack-merge');
const webpackNodeExternals = require('webpack-node-externals');
const webpack = require('webpack');
const baseConfig = require('./app.webpack.base');
const server = {
name: 'server',
entry: ['./app/server/index.js'],
target: 'node',
mode: 'development',
devtool: 'source-map',
output: {
path: path.resolve(__dirname, 'public/server'),
filename: 'server.js',
libraryTarget: 'commonjs2'
},
module: {
rules: [
{
test: [/\.svg$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
loader: 'file-loader',
exclude: /node_modules/,
options: {
name: 'public/media/[name].[ext]',
publicPath: (url) => url.replace(/public/, ''),
emit: false
}
},
{
test: /\.scss$/,
exclude: /node_modules/,
use: [
{
loader: 'css-loader/locals'
},
{
loader: 'sass-loader'
}
]
}
]
},
plugins: [
new webpack.DefinePlugin({
'SERVER_SIDE': true,
'ENVIRONMENT': JSON.stringify(process.env.NODE_ENV),
}),
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1
})
],
externals: [webpackNodeExternals()]
};
module.exports = merge(baseConfig, server);
baseConfig 只为 js 和 jsx 文件添加了一个加载器:
module: {
rules: [
{
test: [/js$/, /\.jsx?$/],
exclude: /node_modules/,
loader: 'babel-loader'
}
]
},
我无法在 VSCode 和 Chrome 中调试它。
在 VSCode 中,我得到了著名的:
未验证断点,已设置断点但尚未绑定
我正在使用 node --inspect 标志运行生成的 server.js 文件(与 webpack 捆绑后):
我尝试了许多 launch.json 配置,例如:
{
"name": "Attach to Process",
"type": "node",
"protocol": "inspector",
"request": "attach",
"port": 9229,
"sourceMaps": true
}
在 Chrome 中,如果我打开 Chrome 的 DevTools,我可以看到源映射并设置断点,但它们永远不会被命中。
如果你能帮我解决这个问题,我将非常感激你们。任何见解或想法也受到赞赏。
谢谢。
解决方案
你可以在这里查看我的解决方案。顺便说一句,我在这里用 SSR 做了一些实验
推荐阅读
- php - 尝试获取数据时 $home 未定义
- java - 字符串之间的时间差异
- window-functions - 如何解决 MySQL8 在 MySQL 5.7 上运行代码的问题?
- python - SQLAlchemy 执行查询但不更新,尽管原始查询在 SQL IDE 中工作正常
- python - 在 PyCharm 中更改默认 Python / Flask 控制台
- flutter - 超级构造函数在flutter_bloc中是如何工作的
- react-native - 使用 React Navigation 设置带有安全区域插入的标题高度
- ubuntu - 如何在 VM 中下载 Kafka
- python - 如何在 Tensorboard 中绘制不是直方图的多纪元 xy 线图?
- reactjs - TypeError:无法读取未定义的属性“ReactCurrentDispatcher”