Проблема:
Я получаю непроверенные точки останова, когда устанавливаю их в своих файлах TS и компонентах Vue при запуске отладчика VS. Я не знаю, актуально ли это, но это код FE для бэкэнда Jupyter Lab, но я не думаю, что это повлияет на отладчик VS? Я думаю, что мои конфиги, вероятно, просто неверны. Я также пытался добавить «отладчик» в код Vue и TS, но они так и не сработали.
Что я пробовал:
Я пытался настроить файл запуска несколькими способами.
Вот мой файл launch.json для отладчика VS:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Remote debugging",
"sourceMaps": true,
"url": "http://localhost:8888/?token=<>",
"webRoot": "${workspaceFolder}",
"sourceMapPathOverrides": {
"*": "${webRoot}/*"
}
},
{
"type": "node",
"request": "launch",
"name": "Launch Webpack",
"program": "${workspaceFolder}",
"cwd": "${workspaceFolder}",
"sourceMaps": true
},
]
}
Вот мой TS.config
{
"compilerOptions": {
"sourceMap": true,
"strict": true,
"strictPropertyInitialization": false,
"strictFunctionTypes": false,
"module": "amd",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"target": "es2017",
"lib": ["es2017", "dom"],
"allowJs": true,
"skipLibCheck": true,
"newLine": "LF",
"experimentalDecorators": true,
"emitDecoratorMetadata": true
},
"include": ["src/**/*"]
}
Вот мой webpack.development.js. Причина, по которой я публикую это, заключается в том, что я установил для него исходные карты в инструментах разработчика.
/**
* Webpack configuration for production.
*
* Optimizes and minifies bundle.
*/
const webpack = require("webpack");
const merge = require("webpack-merge");
const commonConfig = require("./webpack.common.js");
module.exports = merge.multiple(commonConfig, {
mode: "production",
devtool: "source-map",
main: {
optimization: {
minimize: true
},
plugins: [
new webpack.LoaderOptionsPlugin({
minimize: true,
debug: false
}),
new webpack.DefinePlugin({
"process.env": {
NODE_ENV: JSON.stringify("production")
}
}),
// new webpack.optimize.UglifyJsPlugin({
// beautify: false,
// compress: {
// warnings: false,
// drop_console: true
// },
// comments: false,
// sourceMap: true
// }),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.ModuleConcatenationPlugin()
]
}
});
Вот мой вебпак
// Entry point webpack config that delegates to different environments depending on the --env passed in.
module.exports = function(env) {
process.env.NODE_ENV = env;
return require(`./webpack.${env}.js`);
};
Вот мой webpack.production
/**
* Webpack configuration for production.
*
* Optimizes and minifies bundle.
*/
const webpack = require("webpack");
const merge = require("webpack-merge");
const commonConfig = require("./webpack.common.js");
module.exports = merge.multiple(commonConfig, {
mode: "production",
devtool: "source-map",
main: {
optimization: {
minimize: true
},
plugins: [
new webpack.LoaderOptionsPlugin({
minimize: true,
debug: false
}),
new webpack.DefinePlugin({
"process.env": {
NODE_ENV: JSON.stringify("production")
}
}),
// new webpack.optimize.UglifyJsPlugin({
// beautify: false,
// compress: {
// warnings: false,
// drop_console: true
// },
// comments: false,
// sourceMap: true
// }),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.ModuleConcatenationPlugin()
]
}
});
Не могли бы вы попытаться удалить запись sourceMapPathOverrides
из конфигурации запуска Chrome?
"sourceMapPathOverrides": {
"*": "${webRoot}/*"
}
Не уверен, почему вы установили его там вручную, переопределяет значения по умолчанию по VS Code уже должно быть хорошо, если вы сохранили настройки веб-пакета devtoolModuleFilenameTemplate по умолчанию (и я не вижу, что указано в вашем конфиге). Эти настройки влияют на то, как пользовательская схема webpack:///
веб-пакета будет разрешаться для исходных карт. Проблема в том, что если вы установите что-то там вручную, значения по умолчанию все будут переопределены.
Если вы можете выполнять отладку в режиме development
, но не в режиме production
, возможно, это связано с проблемой плагина webpack/terser-webpack-plugin с исходными картами производства. Смотрите здесь: Ссылка1, Ссылка2.
Например.
{
...
mode: "development",
devtool: "inline-source-map" (or "source-map")
}
работает в моей среде.
Обновлять:
Я только что увидел, что в вашей конфигурации разработки веб-пакета вы установили mode: "production"
. Не могли бы вы изменить это на "development"
и посмотреть, работает ли это?
омг..... Это работает! Ты гений!! Никто не мог этого понять, даже люди на форумах Jupyter Lab.
наслаждайся своей щедростью, сэр
обратите внимание, что "inline-source-map" - это то, что позволило ему работать.
рад что помогло :-)
Да, я пытался удалить sourceMapPathOverrides, и для devtool установлено значение «source-map». Я подозреваю, что веб-пакет связывает его, а лаборатория Jupyter снова связывает его, поэтому он теряет исходное сопоставление и, следовательно, не может отлаживать.