这似乎是一个令人尴尬的问题,但是最近在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指南指出,下面列出的任何文件main
也会自动列入白名单。但是,即使将文件files
显式包含在内也无法正常工作。
供参考,我没有.npmignore
文件。
我有一种可怕的感觉,我错过了一些简单而基本的内容...为什么可能会跳过我的主文件?
该包装是diffcraft。
如果您省略./
文件前面的内容(在Windows上使用npm 6.14.4测试),则可以使用:
"files": [
"bin/cli.js",
"src/index.js"
],
这可能是npm中的错误。
您可以通过运行npm pack
和检查存档文件来进行检查而无需发布。
替代方法是使用.npmignore
文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句