英文:
NPM: package not found when installing a module that dependes on a tgz local package
问题
我正在尝试安装一个npm包Module A
,它依赖于一个本地的.tgz包,叫做Module B
。
例如,Module A
的package.json看起来像这样:
{
"name": "module-a",
"dependencies": {
"module-b": "file:./forked-packages/module-b.tgz",
}
}
当我尝试在不同的项目上安装Module A
时,我收到以下错误:
npm警告:module-b@file:forked-packages/module-b.tgz的tarball数据(null)似乎已损坏。正在尝试再次下载。
然后它以ENOENT
代码失败,说明找不到tgz路径。
奇怪的是,如果我运行npm pack module-a
,然后检查module-b
的存在,.tgz文件确实存在于正确的路径forked-packages/module-b.tgz
。
您有关于可能导致这个错误的任何想法吗?任何帮助将不胜感激。
提前感谢。
英文:
I am trying to install an npm package Module A
that has a dependency on a local .tgz package, called Module B
.
For instance, the package.json of Module A
, looks something like this:
{
"name": "module-a",
"dependencies": {
"module-b": "file:./forked-packages/module-b.tgz",
}
}
When trying to install Module A
on a different project, I am getting the following error:
> npm WARN tarball tarball data for module-b@file:forked-packages/module-b.tgz (null) seems to be corrupted. Trying again.
And then it fails with a ENOENT
code stating that the tgz path was not found.
The weird thing is that if I run npm pack module-a
, and then check for the existance of module-b
, the .tgz does exist in the correct path forked-packages/module-b.tgz
Any idea of what could be causing this error? Any help would be appreciated.
Thanks in advance.
答案1
得分: 1
似乎发布到注册表的模块不能具有任何本地依赖项。来自文档的信息:
https://docs.npmjs.com/cli/v9/configuring-npm/package-json#local-paths
此功能对于本地离线开发和创建需要在其中进行npm安装但不希望访问外部服务器的测试非常有帮助,但在发布到公共注册表时不应使用。
注意:以本地路径链接的包在此情况下不会安装其自己的依赖项。您必须从本地路径本身运行npm install。
我正在尝试从私有注册表安装“模块A”,而这个模块将“模块B”作为本地tgz依赖项。
英文:
Seems that modules published to a registry must not have any local dependencies. From the docs:
https://docs.npmjs.com/cli/v9/configuring-npm/package-json#local-paths
> This feature is helpful for local offline development and creating
> tests that require npm installing where you don't want to hit an
> external server, but should not be used when publishing packages to
> the public registry.
>
> note: Packages linked by local path will not have their own
> dependencies installed when npm install is ran in this case. You must
> run npm install from inside the local path itself.
I am trying to install Module A
from a private registry, and this module has Module B
as a local tgz dependency.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论