npm v6安装自定义包失败但v8正常的问题求助
npm v6安装自定义包abc时出现ENOENT错误(chmod找不到bin.js)
我尝试全局安装自己创建的npm包abc时遇到如下错误,该问题仅出现在npm v6版本(使用v6.14.17),npm v8(最新版)中可正常安装。
错误堆栈跟踪
$ npm i -g abc /<home>/.nvm/versions/node/v12.22.10/bin/abc -> /<home>/.nvm/versions/node/v12.22.10/lib/node_modules/abc/src/bin/runner.js npm ERR! code ENOENT npm ERR! syscall chmod npm ERR! path /<home>/.nvm/versions/node/v12.22.10/lib/node_modules/abc/bin.js npm ERR! errno -2 npm ERR! enoent ENOENT: no such file or directory, chmod '/<home>/.nvm/versions/node/v12.22.10/lib/node_modules/abc/bin.js' npm ERR! enoent This is related to npm not being able to find a file. npm ERR! enoent npm ERR! A complete log of this run can be found in: npm ERR! /<home>/.npm/_logs/2022-08-05T07_58_00_703Z-debug.log
版本变更说明
新版本仅对package.json的bin字段做了一处修改:新增了一个脚本配置。
新版本package.json片段
// package.json snippet { "license": "xyz", "bin": { "my-package": "./src/bin/runner.js", "setup": "./bin.js" }, "dependencies": {} }
旧版本package.json片段(可在npm v6正常安装)
// package.json snippet (older version which is getting installed correctly with v6 as well { "license": "xyz", "bin": { "my-package": "./src/bin/runner.js" }, "dependencies": {} }
项目文件夹结构
-- root-folder -- src -- bin -- runner.js -- bin.js -- package.json
已尝试的解决方法
- 更换不同Node版本,搭配npm v6均失败
- 相同Node版本(v12及以上)搭配npm v8可正常安装
- 发布前使用
npm link在npm v6上可正常工作 - 安装旧版本包可正常完成,确认是新版本的问题
- 执行
npm cache clean --force - 使用
--force参数执行npm install - 尝试带/不带
-g参数的npm install
内容的提问来源于stack exchange,提问作者Karan Nagpal
相关产品推荐
相关产品推荐

