Npm打包/发布:找不到文件

时间:2020-07-16 15:14:30

标签: npm npm-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

可以找到项目here。谢谢你的帮助:))✝

编辑:尽管我尚未将当前版本上传到GitHub,但我的 package.json 确实具有如下指定的bin字段::

"bin": "app.js"

1 个答案:

答案 0 :(得分:1)

对您的app.js文件进行以下两项修改:

  1. 更改第7行:

    fs.readFile("./schlachter.json", "utf8", (err, data) => {

    对此:

    fs.readFile(path.resolve(__dirname, "./schlachter.json"), "utf8", (err, data) => {
    
  2. 通过在文件顶部添加以下require语句来导入path模块:

    const path = require("path");
    

说明:

上述更改利用内置的path模块resolve()方法来解决以下两个路径段:

  • __dirname-包含模块的目录的路径。
  • ./schlachter.json-相对路径。

这实际上形成了schlachter.json文件位置的绝对路径。