为什么我的Node.js包在全局安装时缺少主文件?
问这个问题感觉很尴尬,但最近我向NPM注册表发布了一个节点包,现在我发现它不起作用 问题似乎是我的主文件为什么我的Node.js包在全局安装时缺少主文件?,node.js,npm,npm-install,Node.js,Npm,Npm Install,问这个问题感觉很尴尬,但最近我向NPM注册表发布了一个节点包,现在我发现它不起作用 问题似乎是我的主文件/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中索
/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
/src/index.js
在文件
数组中被明确列为白名单。我以前没有这样做过,因为它声明在main
下列出的任何文件也会自动被列入白名单。但即使在文件
中明确包含该文件,也没有起作用
作为参考,我没有.npmignore
文件
我有一种可怕的感觉,我错过了一些简单和基本的东西。。。知道为什么我的主文件会被跳过吗
该软件包是。如果您忽略文件前面的
/
(在Windows上使用npm 6.14.4进行测试),则该软件包有效:
这可能是npm中的一个bug
通过运行npm-pack
并检查存档文件,您可以在不发布的情况下对此进行检查
另一种选择是使用
.npmignore
文件。如果您包含一个指向存储库的链接,那么这里的人可能会更好地帮助您,这样我们就可以准确地看到您拥有的内容、package.json中的内容、存储库中的内容等。…@jfriend00-运行npm repo diffcraft
命令将带您到github repo.FYI,这与全球安装无关。如果在本地安装,同样的问题也会发生。安装中不包括src
目录。请从您的projects package.json中完全省略files
字段/键-这两个文件的路径名已通过main
和bin
定义。我发现您发布的npm模块的存档中不包含所需的目录。因此,在发布过程中似乎出现了一些问题。但是为什么默认情况下不包括src
目录?您不必显式地命名目录,使其成为包的一部分,对吗?从主字段中省略/
并删除文件
数组似乎具有相同的效果。出于某种原因,我不需要为bin
字段设置相同的值;使用或不使用/
拾取的。我不知道为什么,但这种方法似乎有效——我只需再运行一些测试……PS。仅提及npm-pack
一项,就对这个答案进行了投票。谢谢你。PPS。在这方面,npm publish--dry run
也很有用。这显然解决了这个问题。最后,我从主
和bin
文件的路径名中删除了/
,并将文件
作为一个空数组留在了中(因为这似乎比创建.npmignore
来排除我文件夹中的所有其他内容更经济)。谢谢你的帮助!
"files": [
"bin/cli.js",
"src/index.js"
],