npm pack / publish:找不到文件
Npm pack / publish: File cannot be found
我用 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"
对您的 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
文件位置的绝对路径。
我用 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"
对您的 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
文件位置的绝对路径。