【问题标题】:Npm pack / publish: File cannot be foundnpm pack / publish:找不到文件
【发布时间】: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

标签: npm npm-publish


【解决方案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 文件位置的绝对路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    相关资源
    最近更新 更多