我正在尝试打包我在调试器下测试过的第一个 vscode 扩展。
在 package.json 的脚本列表中,我添加了以下行
"package": "webpack --mode production --devtool hidden-source-map"
我使用了推荐的
webpack.config.js
文件,并进行了最小的修改(条目:顶部 JS 文件,扩展名:我添加了“.js”)。我没有更改我不理解其作用且教程中未解释的模块部分。
我成功在vscode下调用webpack命令。 所有源均已正确构建。 但随后我收到所有必需的 node.js 模块的错误(我自己的子模块似乎已正确找到)。 错误说:
Module not found: Error: Can't resolve '<the node.js module name>' in '<source directory>'
错误所指向的行内容为:
const <the node.js module name> = require('<the node.js module name>');
很多人都有类似的错误,但不是在相同的上下文中,所以我找不到适合我的情况的解决方案。
最后我找到了如何避免 webpack 的错误。解决方案是我不理解的部分。看来 webpack 不想在包中包含 Node.js 模块,以避免该包与 Node.js 一起使用时与已安装的模块发生冲突。
但它希望被指示不要包括它们。否则它会产生令我烦恼的错误。
避免错误的方法是为所有 Node.js 模块添加以下行以避免包含。下面的示例显示了 vscode、fs 和路径模块的结果:
config.resolve = {
fallback: {
'vscode' : false,
'path' : false,
'fs' : false,
},
};
请注意,config 是一个变量,您必须使用它来定义模块将导出的内容:
module.exports = config;
并且因为您需要更多导出数据,所以使用对象文字初始化配置可能会更方便:
const config = {
.
.
.
resolve: {
fallback: {
'vscode' : false,
'path' : false,
'fs' : false,
},
},
};
现在我已经解决了我的问题,我真的不知道如何处理构建的包。目前还不清楚为什么 vscode 文档推荐使用 webpack。但这是另一个问题......我会按照 Mike Lischke 给出的方向进行调查。