我正在尝试编写一个VS代码扩展,它是require的其他节点模块。不幸的是,当用户从marketplace安装扩展时,找不到模块。
我所做的是将模块添加到my package.json的dependencies部分(这是extension manifest想要的)。当我在本地运行npm install时,会创建一个node_modules文件夹,其中包含模块。通过launch.json在本地运行该扩展。
但是,当通过VS Code Marketplace安装扩展时,触发其操作将失败,调试工具控制台将显示以下消息
Activating extension 'lalten.vscode-unify' failed: Cannot find module 'tempy'
Require stack:
- /home/laurenz/.vscode-server/extensions/lalten.vscode-unify-0.2.2/out/extension.js
- /home/laurenz/.vscode-server/bin/3c4e3df9e89829dce27b7b5c24508306b151f30d/out/vs/loader.js
- /home/laurenz/.vscode-server/bin/3c4e3df9e89829dce27b7b5c24508306b151f30d/out/bootstrap-amd.js
- /home/laurenz/.vscode-server/bin/3c4e3df9e89829dce27b7b5c24508306b151f30d/out/bootstrap-fork.js.而且node_modules目录确实缺失了:
$ ls /home/user/.vscode-server/extensions/lalten.vscode-unify-0.2.2/
icon.png images LICENSE.md out package.json README.md(这在本地和ssh远程vscode服务器中都会发生,/home/laurenz/.vscode/extensions/lalten.vscode-unify-0.2.2/也没有node_modules。)
模块似乎是无害的,而vsce ls包含了node_ .vscodeignore /。
其他人在过去也有这个问题,但他们的解决方案是使用update vsce (我有最新的1.87.1),使用dependencies instead of devDependencies (我确实这样做了),或者deleting the node_modules folder (没有帮助)。
我还觉得奇怪的是,这个扩展在CI中是有效的,所以我的直觉是,它的发布方式一定与它的发布方式有关。
有什么想法吗?
发布于 2021-04-22 16:09:06
原来我的package.json在scripts部分有:
"deploy": "vsce publish --yarn"当它应该是的时候
"deploy": "vsce publish"现在包括了node_modules。
感谢那些有用的评论,让我走上了正确的道路。我还将在未来研究捆绑扩展。
https://stackoverflow.com/questions/67191722
复制相似问题