首页 > 解决方案 > 尽管在测试脚本中抛出了错误,但“npm publish”并未被阻止

问题描述

如果我没记错的话,使用测试脚本的一个很好的理由是防止发布有缺陷的代码。因此,我编写了自己的测试脚本,如果其中一个测试用例失败,则会引发错误。

// index.test.js
if (!testCase) {
   throw new Error("Error detected, publishing process supposed to be canceled!");
}
// package.json
"scripts": {
   "test": "node index.test.js",
   "prepublishOnly": "npm test"
},

现在,当我运行npm publish我的测试脚本时,我的测试脚本会按预期执行,抛出一个错误,但我的 npm 包仍然被发布。

在此处输入图像描述

我想使用 Mocha 或 Jest 之类的测试框架可能会解决问题,但我更愿意在普通的 node.js 中完成!

标签: node.jsnpmerror-handlingnpm-publish

解决方案


谢谢你的评论@tkausl!

我假设,即使抛出异常,节点进程也不会以错误代码退出,这使 npm 认为一切顺利。您需要确保以错误代码退出。——</p>

使用process.exit(1)代替throw new Error()确实可以解决问题!


推荐阅读