Cli: [BUG] npm publish tarball 得到 `ENOTDIR: not a directory` 错误

创建于 2020-10-26  ·  3评论  ·  资料来源: npm/cli

当前行为:

使用像npm publish /path/to/tarball/from/npm-pack.tgz这样的命令,npm 会报错:

$ npm publish ./dr-js-core-0.4.0-dev.8.tgz
npm ERR! code ENOTDIR
npm ERR! syscall open
npm ERR! path ./dr-js-core-0.4.0-dev.8.tgz/package.json
npm ERR! errno -20
npm ERR! ENOTDIR: not a directory, open './dr-js-core-0.4.0-dev.8.tgz/package.json'

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/dr/.npm/_logs/2020-10-26T08_40_37_321Z-debug.log

和日志文件:

[/home/dr/.npm/_logs/2020-10-26T08_40_37_321Z-debug.log]

0 verbose cli [
0 verbose cli   '/usr/bin/node',
0 verbose cli   '/usr/bin/npm',
0 verbose cli   'publish',
0 verbose cli   './dr-js-core-0.4.0-dev.8.tgz'
0 verbose cli ]
1 info using [email protected]
2 info using [email protected]
3 timing config:load:defaults Completed in 1ms
4 timing config:load:file:/usr/lib/node_modules/npm/npmrc Completed in 1ms
5 timing config:load:builtin Completed in 1ms
6 timing config:load:cli Completed in 2ms
7 timing config:load:env Completed in 0ms
8 timing config:load:file:/home/dr/Git/dr-js/.npmrc Completed in 0ms
9 timing config:load:project Completed in 1ms
10 timing config:load:file:/home/dr/.npmrc Completed in 2ms
11 timing config:load:user Completed in 2ms
12 timing config:load:file:/usr/etc/npmrc Completed in 0ms
13 timing config:load:global Completed in 0ms
14 timing config:load:cafile Completed in 0ms
15 timing config:load:validate Completed in 3ms
16 timing config:load:setUserAgent Completed in 0ms
17 timing config:load:setEnvs Completed in 1ms
18 timing config:load Completed in 12ms
19 verbose npm-session 27bc3b1b0c2cde0a
20 timing npm:load Completed in 23ms
21 verbose publish [ './dr-js-core-0.4.0-dev.8.tgz' ]
22 timing command:publish Completed in 20ms
23 verbose stack Error: ENOTDIR: not a directory, open './dr-js-core-0.4.0-dev.8.tgz/package.json'
24 verbose cwd /home/dr/Git/dr-js
25 verbose Linux 5.9.1-arch1-1
26 verbose argv "/usr/bin/node" "/usr/bin/npm" "publish" "./dr-js-core-0.4.0-dev.8.tgz"
27 verbose node v15.0.1
28 verbose npm  v7.0.5
29 error code ENOTDIR
30 error syscall open
31 error path ./dr-js-core-0.4.0-dev.8.tgz/package.json
32 error errno -20
33 error ENOTDIR: not a directory, open './dr-js-core-0.4.0-dev.8.tgz/package.json'
34 verbose exit -20

预期行为:

应该只发布 tarball,目前 npm 似乎认为这是一个运行npm pack的文件夹。

重现步骤:

应该能够测试:
```shell 脚本
mkdir -p ./test-npm-publish
cd ./test-npm-publish
npm init --yes
npm 包
npm publish test-npm-publish-1.0.0.tgz


### Environment:
<!--
ex.
- OS: Ubuntu 20.04
- Node: 13.14.0
- npm: 6.4.12
-->

25 详细 Linux 5.9.1-arch1-1
27 详细节点 v15.0.1
28 冗长的 npm v7.0.5
``

Bug Release 7.x

最有用的评论

这是我们有意放弃支持的东西,但不是出于任何强烈的原则性原因,只是因为我们不确定有人在使用它。 很高兴重新获得支持,因为无论如何我在 libnpmpublish 中还有一些其他的小修复要做。

所有3条评论

当前的解决方法是切换回来并使用npm@6
```shell 脚本
npm i -g npm@6

or use `npx` as a manual temp fix:
```shell script
npx npm<strong i="10">@6</strong> publish ./dr-js-core-0.4.0-dev.8.tgz --tag dev --access public

两者都经过测试,应该可以工作。

这是我们有意放弃支持的东西,但不是出于任何强烈的原则性原因,只是因为我们不确定有人在使用它。 很高兴重新获得支持,因为无论如何我在 libnpmpublish 中还有一些其他的小修复要做。

这是最近修复的,请在最新版本中重试。

此页面是否有帮助?
0 / 5 - 0 等级