我已将软件包发布到GitHub npm注册表。根据以下屏幕截图,当我登录GitHub时可以看到该软件包。
在本地,其他软件包将前者作为依赖项。因此,我在package.json
上:
"dependencies": {
"<@scope>/<package_name>": "1.2.0",
...
与文档一致,我还具有一个.npmrc
文件,该文件与带有authToken的package.json
在同一目录中。此authToken具有所有必要的权限(delete:packages, read:packages, repo, write:packages
)
//npm.pkg.github.com/:_authToken=<my_auth_token>
registry=https://npm.pkg.github.com/OWNER
最后,我在package.json
上有以下两项。尽管我认为这些对于将软件包发布到github注册表是必需的,但无需安装它们,这是当前的问题。
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
"repository": {
"type": "git",
"url": "https://github.com/<OWNER>/<REPO>.git"
}
因此,当我尝试安装软件包时遇到的错误是:
npm ERR! code E404
npm ERR! 404 Not Found: <@scope>/<package_name>@1.2.0
当我尝试了解一些有用的日志的情况时:
使用npm install @<scope>/<package_name>@1.2.0 --loglevels verbose
,我看到:
....
npm http fetch GET 200 https://npm.pkg.github.com/OWNER/@<scope>%2f<package_name>
npm http fetch GET 404 https://npm.pkg.github.com/download/@<scope>/<package_name>/1.2.0/98e69e2adddec5c715a32c94352efac83ce586e4e6f3d06fef1fc1f82d238r34
...
第一个http请求成功,这似乎表明事物已正确连接并经过身份验证。但是,我不知道为什么以后会收到404。如上图所示,包装很明显就在那里。
有人有类似的问题吗?
答案 0 :(得分:1)
好吧,我自己的.npmrc(在主目录中)配置如下:
//registry.npmjs.org/:_authToken=<token>
//npm.pkg.github.com/:_authToken=<token>
@myorg1:registry=https://npm.pkg.github.com
@myorg2:registry=https://registry.npmjs.org
我没有像您那样在github注册表URL中添加我的组织,而是指定了用于每个范围的注册表。
答案 1 :(得分:1)
我刚刚遇到了同样的问题。删除 package-lock.json 为我修复了它。我怀疑问题是我之前从 tarball 安装了有问题的包,并且旧的安装信息以某种方式缓存在 package-lock.json