circleci 中的语义释放命令抛出有关 execa 的错误
semantic-release command in circleci throws error regarding execa
我正在尝试向 npm 发布一个包。
当 CircleCI 尝试 运行 semantic-release
时,它会抛出以下错误:
/home/circleci/src/node_modules/semantic-release/node_modules/execa/index.js:18
const env = extendEnv ? {...process.env, ...envOption} : envOption;
^^^
SyntaxError: Unexpected token ...
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:511:25)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:456:32)
at tryModuleLoad (module.js:415:12)
at Function.Module._load (module.js:407:3)
at Module.require (module.js:466:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/circleci/src/node_modules/semantic-release/bin/semantic-release.js:9:13)
at Module._compile (module.js:541:32)
npm ERR! code ELIFECYCLE
我的package.json
devDependencies如下:
"devDependencies": {
"@semantic-release/changelog": "^5.0.1",
"@semantic-release/commit-analyzer": "^8.0.1",
"@semantic-release/git": "^9.0.0",
"@semantic-release/github": "^7.0.7",
"@semantic-release/npm": "^7.0.5",
"@semantic-release/release-notes-generator": "^9.0.1",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-prettier": "^3.1.3",
"jest": "^25.5.1",
"marked": "^0.4.0",
"npm-audit-resolver": "^2.2.0",
"prettier": "^2.0.5",
"semantic-release": "^16.0.4",
"semantic-release-cli": "^5.3.1"
},
我已经在 CircleCI 中为 github 和 npm 设置了环境变量,并在我的 CircleCI 配置文件中使用了它们。在我的 CircleCI 配置中,我在 运行ning semantic-release
之前也有 npm ci
步骤。
想知道是否有人遇到过这个问题并解决了这个问题? (如果需要,我可以提供更多信息。)
我自己解决了这个问题。我怀疑问题是由于我在库中使用的 semantic-release
插件的某些版本不兼容造成的。我尝试了不同版本的 semantic-release
但没有成功。
最后,我检查了我的 CircleCI 执行器的 Nodejs 版本 (node --version
),它是一个机器执行器 (image: ubuntu-1604:201903-01
)。我发现那个执行器中的节点版本太旧了(v6.x.x
)。我需要那个机器执行器来 运行 我的测试,因为我必须通过机器上的其他 docker 图像 运行ning 来模拟一些 aws 功能。但是,可以将 release
步骤的执行程序更改为 Nodejs docker 执行程序。所以,我这样做了,问题就解决了。
例如,我在 CircleCI 配置的开头添加了如下内容:
version: 2.1
default_executor: &default_executor
working_directory: ~/repo
machine:
image: ubuntu-1604:201903-01
release_executor: &release_executor
working_directory: ~/repo
docker:
- image: circleci/node:10.18
然后,在 release
步骤中,我在 运行 之前执行了此操作 npm run semantic-release
:
release:
<<: *release_executor
希望这个解决方案也能帮助其他人:)
我正在尝试向 npm 发布一个包。
当 CircleCI 尝试 运行 semantic-release
时,它会抛出以下错误:
/home/circleci/src/node_modules/semantic-release/node_modules/execa/index.js:18
const env = extendEnv ? {...process.env, ...envOption} : envOption;
^^^
SyntaxError: Unexpected token ...
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:511:25)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:456:32)
at tryModuleLoad (module.js:415:12)
at Function.Module._load (module.js:407:3)
at Module.require (module.js:466:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/circleci/src/node_modules/semantic-release/bin/semantic-release.js:9:13)
at Module._compile (module.js:541:32)
npm ERR! code ELIFECYCLE
我的package.json
devDependencies如下:
"devDependencies": {
"@semantic-release/changelog": "^5.0.1",
"@semantic-release/commit-analyzer": "^8.0.1",
"@semantic-release/git": "^9.0.0",
"@semantic-release/github": "^7.0.7",
"@semantic-release/npm": "^7.0.5",
"@semantic-release/release-notes-generator": "^9.0.1",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-prettier": "^3.1.3",
"jest": "^25.5.1",
"marked": "^0.4.0",
"npm-audit-resolver": "^2.2.0",
"prettier": "^2.0.5",
"semantic-release": "^16.0.4",
"semantic-release-cli": "^5.3.1"
},
我已经在 CircleCI 中为 github 和 npm 设置了环境变量,并在我的 CircleCI 配置文件中使用了它们。在我的 CircleCI 配置中,我在 运行ning semantic-release
之前也有 npm ci
步骤。
想知道是否有人遇到过这个问题并解决了这个问题? (如果需要,我可以提供更多信息。)
我自己解决了这个问题。我怀疑问题是由于我在库中使用的 semantic-release
插件的某些版本不兼容造成的。我尝试了不同版本的 semantic-release
但没有成功。
最后,我检查了我的 CircleCI 执行器的 Nodejs 版本 (node --version
),它是一个机器执行器 (image: ubuntu-1604:201903-01
)。我发现那个执行器中的节点版本太旧了(v6.x.x
)。我需要那个机器执行器来 运行 我的测试,因为我必须通过机器上的其他 docker 图像 运行ning 来模拟一些 aws 功能。但是,可以将 release
步骤的执行程序更改为 Nodejs docker 执行程序。所以,我这样做了,问题就解决了。
例如,我在 CircleCI 配置的开头添加了如下内容:
version: 2.1
default_executor: &default_executor
working_directory: ~/repo
machine:
image: ubuntu-1604:201903-01
release_executor: &release_executor
working_directory: ~/repo
docker:
- image: circleci/node:10.18
然后,在 release
步骤中,我在 运行 之前执行了此操作 npm run semantic-release
:
release:
<<: *release_executor
希望这个解决方案也能帮助其他人:)