为什么我的 Node.js 包在全局安装时缺少主文件?
Why is my Node.js package missing the main file when installed globally?
这感觉像是一个令人尴尬的问题,但最近向 NPM 注册表发布了一个 Node 包,我现在发现它不起作用。
问题似乎是我的主文件 ./src/index.js
没有包含在全局安装中。
我知道这个是因为当我从命令行调用包时它
按预期在包中运行 ./bin/cli.js
,但随后抛出:
Error: Cannot find module '../src/index.js'
Require stack:
- /usr/lib/node_modules/diffcraft/bin/cli.js
该错误甚至引用了 ./bin/cli.js
中索引所在的行
文件是必需的,所以这肯定是问题所在。
这个我也知道,因为我查看了模块所在的文件夹
全局安装,当 bin
文件夹存在时,src
文件夹不是。所以我的包的主要代码不在那里。
发现这一点后,我什至修补了 package.json 以确保 ./src/index.js
在 files
数组中明确列入白名单。我以前没有这样做过,因为 NPM guidance 指出 main
下列出的任何文件也自动列入白名单。但即使在 files
中明确包含该文件也没有用。
作为参考,我没有 .npmignore
文件。
我有一种可怕的感觉,我缺少一些简单和基本的东西...知道为什么我的主文件可能被跳过了吗?
包裹是diffcraft。
如果你省略文件前面的 ./
它会起作用(在 Windows 上用 npm 6.14.4 测试):
"files": [
"bin/cli.js",
"src/index.js"
],
这可能是 npm 中的错误。
您可以在不通过 运行 npm pack
发布并检查存档文件的情况下进行检查。
备选方案是使用 .npmignore
文件。
这感觉像是一个令人尴尬的问题,但最近向 NPM 注册表发布了一个 Node 包,我现在发现它不起作用。
问题似乎是我的主文件 ./src/index.js
没有包含在全局安装中。
我知道这个是因为当我从命令行调用包时它 按预期在包中运行
./bin/cli.js
,但随后抛出:Error: Cannot find module '../src/index.js' Require stack: - /usr/lib/node_modules/diffcraft/bin/cli.js
该错误甚至引用了
./bin/cli.js
中索引所在的行 文件是必需的,所以这肯定是问题所在。这个我也知道,因为我查看了模块所在的文件夹 全局安装,当
bin
文件夹存在时,src
文件夹不是。所以我的包的主要代码不在那里。
发现这一点后,我什至修补了 package.json 以确保 ./src/index.js
在 files
数组中明确列入白名单。我以前没有这样做过,因为 NPM guidance 指出 main
下列出的任何文件也自动列入白名单。但即使在 files
中明确包含该文件也没有用。
作为参考,我没有 .npmignore
文件。
我有一种可怕的感觉,我缺少一些简单和基本的东西...知道为什么我的主文件可能被跳过了吗?
包裹是diffcraft。
如果你省略文件前面的 ./
它会起作用(在 Windows 上用 npm 6.14.4 测试):
"files": [
"bin/cli.js",
"src/index.js"
],
这可能是 npm 中的错误。
您可以在不通过 运行 npm pack
发布并检查存档文件的情况下进行检查。
备选方案是使用 .npmignore
文件。