迁移至Windows 11后使用vsce打包VS Code扩展失败求助
问题原因及解决方案
核心原因
??=是空值合并赋值运算符,属于ES2021语法特性,Node.js 14.x系列并不支持该运算符(Node.js 15.0.0及以上版本才正式提供支持)。
你遇到跨环境差异的具体原因:
- Windows 10环境下,之前的依赖缓存或安装的
undici库是兼容Node.js 14的旧版本,未使用该语法; - 迁移到Windows 11后,重新安装依赖时拉取了
undici的新版本,该版本引入了Node.js 14不支持的??=语法,导致执行vsce package时触发SyntaxError; - 同时,
vsce@2.14.0的依赖链中默认引入的undici版本已经不再兼容Node.js 14,这是触发问题的直接诱因。
解决方案
可选择以下任一方式解决:
- 升级Node.js版本:将Node.js升级到16.x及以上的LTS版本(Node.js 14已结束官方维护),新版本原生支持
??=运算符,可直接解决语法兼容问题。 - 锁定undici兼容版本:在项目的
package.json中添加版本锁定规则,强制使用兼容Node.js 14的undici版本:- 若使用yarn,直接添加:
"resolutions": { "undici": "^5.20.0" } - 若使用npm,需先安装
npm-force-resolutions工具,再添加上述resolutions字段,之后执行npm install。
- 若使用yarn,直接添加:
- 降级vsce版本:将
vsce降级到依赖兼容Node.js 14的旧版本,比如vsce@2.10.0,执行命令:npm install -g vsce@2.10.0
内容的提问来源于stack exchange,提问作者Boykaczhu
相关产品推荐
相关产品推荐

