npm - npm pack / publish:找不到文件
问题描述
我用 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
该项目可以在这里找到。谢谢你帮助我:)) ✝</p>
编辑:我的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) => {
通过在文件顶部
path
添加以下语句来导入模块:require
const path = require("path");
解释:
上述更改利用内置path
模块resolve()
方法来解析以下两个路径段:
__dirname
- 包含您的模块的目录的路径。./schlachter.json
- 相对路径。
这实质上形成了schlachter.json
文件位置的绝对路径。
推荐阅读
- java - JSch 在不更改代码的情况下禁用特定密码
- c++ - 具有不同数据类型的 std::move()
- swift - 从发送阵列数据的核心蓝牙外设读取数据?
- oracle - 有没有办法将 oracle PDB 导出/导入到 SQL 脚本中?
- php - 关联数组的值
- python - 如何删除txt文件中以相同字母(序列)开头的行?
- c# - 比较复杂结构 C# 中的 N 个对象
- prolog - 提取 Prolog 树的最小值
- c# - 从 VisulaStudio 项目中抑制或删除 CA0068 CA 警告
- amazon-web-services - cloudformation 堆栈中的内部转换错误