在 npm 中发布新版本的包时出错
Posted
技术标签:
【中文标题】在 npm 中发布新版本的包时出错【英文标题】:Error publishing a new version of a package in npm 【发布时间】:2015-09-21 05:21:57 【问题描述】:我正在尝试使用 npm 重新发布一个包。我确实在package.json
中更新了软件包版本,但出现以下错误:
npm ERR! publish Failed PUT 404
npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs
\\node_modules\\npm\\bin\\npm-cli.js" "publish"
npm ERR! node v0.12.3
npm ERR! npm v2.9.1
npm ERR! code E404
npm ERR! 404 missing : @psychodelicgod/npm
npm ERR! 404
npm ERR! 404 '@psychodelicgod/npm' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! Please include the following file with any support request:
npm ERR! C:\Users\Michał Szydłowski\npm\npm-debug.log
还有我的debug.log
:
0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'publish' ]
2 info using npm@2.9.1
3 info using node@v0.12.3
4 verbose node symlink C:\Program Files\nodejs\\node.exe
5 verbose publish [ '.' ]
6 silly cache add args [ '.', null ]
7 verbose cache add spec .
8 silly cache add parsed spec raw: '.',
8 silly cache add scope: null,
8 silly cache add name: null,
8 silly cache add rawSpec: '.',
8 silly cache add spec: 'C:\\Users\\Michał Szydłowski\\npm',
8 silly cache add type: 'directory'
9 verbose addLocalDirectory C:\Users\Michał Szydłowski\AppData\Roaming\npm-cache\@psychodelicgod\npm\1.0.2\package.tgz not in flight; packing
10 verbose tar pack [ 'C:\\Users\\Michał Szydłowski\\AppData\\Roaming\\npm-cache\\@psychodelicgod\\npm\\1.0.2\\package.tgz',
10 verbose tar pack 'C:\\Users\\Michał Szydłowski\\npm' ]
11 verbose tarball C:\Users\Michał Szydłowski\AppData\Roaming\npm-cache\@psychodelicgod\npm\1.0.2\package.tgz
12 verbose folder C:\Users\Michał Szydłowski\npm
13 info prepublish @psychodelicgod/npm@1.0.2
14 verbose addLocalTarball adding from inside cache C:\Users\Michał Szydłowski\AppData\Roaming\npm-cache\@psychodelicgod\npm\1.0.2\package.tgz
15 silly cache afterAdd @psychodelicgod/npm@1.0.2
16 verbose afterAdd C:\Users\Michał Szydłowski\AppData\Roaming\npm-cache\@psychodelicgod\npm\1.0.2\package\package.json not in flight; writing
17 verbose afterAdd C:\Users\Michał Szydłowski\AppData\Roaming\npm-cache\@psychodelicgod\npm\1.0.2\package\package.json written
18 silly publish name: '@psychodelicgod/npm',
18 silly publish version: '1.0.2',
18 silly publish description: 'd',
18 silly publish main: 'index.js',
18 silly publish scripts: test: 'node test.js' ,
18 silly publish author: '',
18 silly publish license: 'ISC',
18 silly publish dependencies: '@linclark/pkg': '^1.0.2' ,
18 silly publish repository: type: 'git', url: 'C:\\Users\\Michał Szydłowski\\npm' ,
18 silly publish readme: 'Sample description.',
18 silly publish readmeFilename: 'README.md',
18 silly publish _id: '@psychodelicgod/npm@1.0.2',
18 silly publish _shasum: 'b66a8a42e64f0a2b8166ce511629e107d47ab027',
18 silly publish _from: '.'
19 verbose getPublishConfig undefined
20 silly mapToRegistry name @psychodelicgod/npm
21 silly mapToRegistry scope (from package name) @psychodelicgod
22 verbose mapToRegistry no registry URL found in name for scope @psychodelicgod
23 silly mapToRegistry using default registry
24 silly mapToRegistry registry http://localhost:15443/
25 silly mapToRegistry uri http://localhost:15443/@psychodelicgod%2fnpm
26 verbose publish registryBase http://localhost:15443/
27 silly publish uploading C:\Users\Michał Szydłowski\AppData\Roaming\npm-cache\@psychodelicgod\npm\1.0.2\package.tgz
28 verbose request uri http://localhost:15443/@psychodelicgod%2fnpm
29 verbose request sending authorization for write operation
30 info attempt registry request try #1 at 13:11:50
31 verbose request id e5c460330af2176f
32 http request PUT http://localhost:15443/@psychodelicgod%2fnpm
33 http 404 http://localhost:15443/@psychodelicgod%2fnpm
34 verbose headers 'content-type': 'application/json',
34 verbose headers date: 'Fri, 03 Jul 2015 11:11:50 GMT',
34 verbose headers connection: 'keep-alive',
34 verbose headers 'transfer-encoding': 'chunked'
35 verbose request invalidating C:\Users\Michał Szydłowski\AppData\Roaming\npm-cache\localhost_15443\_40psychodelicgod_252fnpm on PUT
36 error publish Failed PUT 404
37 verbose stack Error: missing : @psychodelicgod/npm
37 verbose stack at CachingRegistryClient.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\request.js:247:14)
37 verbose stack at Request._callback (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-client\lib\request.js:170:14)
37 verbose stack at Request.self.callback (C:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:368:22)
37 verbose stack at Request.emit (events.js:110:17)
37 verbose stack at Request.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:1219:14)
37 verbose stack at Request.emit (events.js:129:20)
37 verbose stack at IncomingMessage.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\request\request.js:1167:12)
37 verbose stack at IncomingMessage.emit (events.js:129:20)
37 verbose stack at _stream_readable.js:908:16
37 verbose stack at process._tickCallback (node.js:355:11)
38 verbose statusCode 404
39 verbose pkgid @psychodelicgod/npm
40 verbose cwd C:\Users\Michał Szydłowski\npm
41 error Windows_NT 6.3.9600
42 error argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "publish"
43 error node v0.12.3
44 error npm v2.9.1
45 error code E404
46 error 404 missing : @psychodelicgod/npm
46 error 404
46 error 404 '@psychodelicgod/npm' is not in the npm registry.
46 error 404 You should bug the author to publish it (or use the name yourself!)
46 error 404
46 error 404 Note that you can also install from a
46 error 404 tarball, folder, http url, or git url.
47 verbose exit [ 1, true ]
我在这里尝试了几个类似的答案,但这些都没有帮助。有什么想法吗?
【问题讨论】:
您确定为您的项目使用了正确的名称吗?我找不到模块“@psychodelicgod/npm”。 您为命名空间付费了吗?您正在尝试发布到私有模块范围。 npmjs.com/private-modules#scopes 废话,刚刚注意到您正在尝试发布到本地 NPM。 确实如此。无论如何我都在学习教程,所以肯定不需要付费的命名空间。 36 error publish Failed PUT 404 37 verbose stack Error: missing : @psychodelicgod/npm 好像没有psychodelicgod/npm。你检查权限了吗? 【参考方案1】:发布时出现404错误主要是因为访问错误。这可能是访问令牌错误或读写错误。请在组织包权限页面检查您的访问设置。
-
如果您是第一次从本地计算机发布,请使用
npm login
在您的帐户上创建访问令牌。登录后,令牌将自动添加到您的全局 npmrc
文件中,您可以再次尝试发布。
如果您尝试更新软件包并看到 404 错误,请在您的组织设置中为该软件包启用读写权限。
如果您使用 CI/CD 管道工具,则必须指定 scope
,并使用具有读写权限的访问令牌。
【讨论】:
【参考方案2】:#在 npm 注册表上发布
您需要创建 npm 用户。你可以关注here。 总之
npm adduser
npm login
执行npm config ls
以确保凭据存储在您的客户端上。
那就试试吧
npm publish
.
在本地安装或测试打包您的模块
你可以试试
tar -tf $(npm pack)
npm install <path/to/your/package.tgz>
我检查了here 和here 的参考资料。
【讨论】:
【参考方案3】:我也遇到了同样的问题。 对我来说,电子邮件未经过验证。 您可以登录 npmjs.org 并验证电子邮件。
【讨论】:
【参考方案4】:从日志中,我注意到以下异常
36 error publish Failed PUT 404
37 verbose stack Error: missing : @psychodelicgod/npm
您似乎已注销,或者您需要在注册表中注册 npm adduser "psychodelicgod" 作为 用户名 并登录以在该范围内发布。请看一下“Working with scoped packages”和“publishing NPM Packages”
【讨论】:
【参考方案5】:我不知道,安装包期间你的代码会发生什么。请在此处查看:https://docs.npmjs.com/getting-started/creating-node-modules 了解如何安装包模块。 这些是安装包的简单方法:
Publish your package to npm
Make a new directory outside of your project and cd into it
Run npm install <package>
Create a test.js file which requires the package and calls the method
Run node test.js. The message should be output.
【讨论】:
【参考方案6】:npmjs.org 的 npm 服务器实现中存在(截至撰写时)一个错误,当包无法发布时,该错误不会提供有用的信息。如果您在组织范围内使用npmjs.org,请确保您的用户权限为read-write
。当然,这似乎很明显,但出现的错误表明正在尝试更新的存储库不存在,或者至少对尝试发布的用户不可见。实际上,用户可能在搜索时可以看到该包,但在尝试发布时却被告知该包不存在。
也许你的 npm 服务器也有类似的问题。
【讨论】:
以上是关于在 npm 中发布新版本的包时出错的主要内容,如果未能解决你的问题,请参考以下文章
在我的 OSGi 环境中安装新版本的 Groovy 会使我的包导入它,尽管它不应该
Nodejs - 如何在 ubuntu 中卸载旧版本的 nodejs 并安装新版本的 nodejs