Node.js用Swagger API运行npm start报Unexpected Token =错误的非升级解决方案
Node.js 10环境下
Unexpected Token =错误的解决办法 问题根源
Node.js 10.x不支持类公共字段语法(就是类里直接写type = 'EphemeralArray';这种赋值方式),而你用到的@swagger-api/apidom-core版本已经用了这个语法,旧Node版本编译时就会报错。
不用升级Node的解决思路
锁定兼容旧Node的apidom-core版本:直接安装该包的旧版本,找一个明确支持Node.js 10的发布版。执行命令:
npm install @swagger-api/apidom-core@0.94.0 --save-exact0.94.0及之前的版本大多兼容Node.js 10,要是这个版本不行,可以再试更低的版本。
用Babel转译依赖包:如果必须用新版本的apidom-core,就用Babel把它转成Node.js 10能识别的代码:
- 先装Babel相关依赖:
npm install @babel/core @babel/preset-env babel-loader --save-dev - 在项目根目录建
.babelrc文件,写配置:{ "presets": [ ["@babel/preset-env", { "targets": { "node": "10.24.1" } }] ] } - 修改项目的构建配置(比如webpack),让它转译
node_modules里的apidom-core:module.exports = { // 其他配置不动,加下面的规则 module: { rules: [ { test: /\.cjs$/, include: /node_modules\/@swagger-api\/apidom-core/, use: 'babel-loader' } ] } };
改完重新运行
npm start就行。- 先装Babel相关依赖:
用nvm临时切换版本(不影响全局):要是只是临时跑项目,用nvm装个兼容的Node版本(比如12.22.12),只在当前项目目录用:
- 先装nvm(没装的话自行安装)
- 在项目文件夹里执行:
用完切回原来的版本:nvm install 12.22.12 nvm use 12.22.12 npm startnvm use 10.24.1
内容的提问来源于stack exchange,提问作者Neha
相关产品推荐
相关产品推荐

