下面是“从parcel.js打包出错到选择nvm的全部过程”的完整攻略:
1.问题出现
当我们使用Parcel.js
打包项目时,有时候会遇到打包出错的情况,这可能是因为我们的代码中使用了新版的语言特性,而Parcel.js
运行的Node.js
版本太低,不能识别这些新特性。
2.排查问题
要确定是否是Node.js
版本问题,我们可以先查看package.json
文件中的engines
字段,确认项目需要的Node.js
版本。
若Node.js
版本已经正确指定了,但仍然出现打包错误,则需要进一步查看报错信息,确定出错的具体原因。
3.解决问题
针对Node.js
版本过低的问题,我们可以选择使用nvm
来切换Node.js
版本,操作步骤如下:
3.1 安装nvm
具体安装步骤可参考官网指引:https://github.com/nvm-sh/nvm#install--update-script
3.2 切换Node.js版本
(以切换到v14.15.4
版本为例)在终端中执行以下命令:
nvm install v14.15.4
nvm use v14.15.4
3.3 再次打包
切换成功后,我们重新执行打包命令,看是否能够成功打包。
示例说明
示例1
终端中执行打包命令后,报错信息如下:
SyntaxError: Unexpected token '<'
at wrapSafe (internal/modules/cjs/loader.js:1043:16)
at Module._compile (internal/modules/cjs/loader.js:1091:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Module.require (internal/modules/cjs/loader.js:1025:19)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (D:\myProject\index.js:1:13)
通过查看错误信息中的SyntaxError: Unexpected token '<'
,我们可以判断这是因为代码中使用了>
或<
等符号在打包时没有被正确转义导致的语法错误。而解决这个问题的方法不是切换Node.js
版本,而是检查代码中是否有这样的问题。
示例2
终端中执行打包命令后,报错信息如下:
Node Sass could not find a binding for your current environment: macOS 64-bit with Node.js 14.x
Found bindings for the following environments:
- macOS 64-bit with Node.js 10.x
通过查看错误信息,我们可以看到这是因为当前运行的Node.js
版本和依赖库中使用的Node.js
版本不匹配导致的编译错误。此时我们可以使用nvm
工具,切换到能够匹配依赖库要求的Node.js
版本进行重新打包。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:从parcel.js打包出错到选择nvm的全部过程 - Python技术站