npm pack / publish:找不到文件
Posted
技术标签:
【中文标题】npm pack / publish:找不到文件【英文标题】:Npm pack / publish: File cannot be found 【发布时间】:2020-11-06 07:25:19 【问题描述】:我使用 node.js 制作了一个运行良好的 CLI 工具。然后我想将它作为一个 npm 包发布,它也可以正常工作。但是由于找不到(本地)文件,现在出现以下错误:
/usr/lib/node_modules/german-bible-cli/app.js:8 if (err) throw err; ^ [Error: ENOENT: no such file or directory, open './schlachter.json'] errno: -2, code: 'ENOENT', syscall: 'open', path: './schlachter.json'
在我安装发布的包并尝试运行以下命令后发生错误:
$ german-bible-cli
该项目可以在here找到。谢谢你帮助我:)) ✝
编辑:我的 package.json 确实有如下指定的bin
字段,尽管我还没有将当前版本上传到 GitHub。:
"bin": "app.js"
【问题讨论】:
CLI 工具需要在 package,json 中指定的bin
- 您的 package.json 没有。在错误消息出现之前你运行了什么命令?
1.它有一个指定的 bin(我不会上传当前版本) 2. German-bible-cli
【参考方案1】:
对您的app.js
文件进行以下两项修改:
从这里更改第 7 行:
fs.readFile("./schlachter.json", "utf8", (err, data) =>
改为:
fs.readFile(path.resolve(__dirname, "./schlachter.json"), "utf8", (err, data) =>
通过在文件顶部添加以下require
语句来导入path
模块:
const path = require("path");
说明:
上述更改利用内置的path
模块resolve()
方法来解析以下两个路径段:
__dirname
- 包含您的模块的目录的路径。
./schlachter.json
- 相对路径。
这实质上形成了schlachter.json
文件位置的绝对路径。
【讨论】:
以上是关于npm pack / publish:找不到文件的主要内容,如果未能解决你的问题,请参考以下文章
Windows 无法安装程序包 因为找不到此程序包所依赖的另一个程序包。此程序包需要具有 any publisher
NPM 安装总是失败,在 .staging 文件夹中找不到 JSON 解析和文件