npm 发布失败,并显示““路径”参数必须是字符串类型。收到未定义”

Posted

技术标签:

【中文标题】npm 发布失败,并显示““路径”参数必须是字符串类型。收到未定义”【英文标题】:npm publish fails with "The "path" argument must be of type string. Received undefined" 【发布时间】:2021-06-16 01:57:18 【问题描述】:

我有一个项目,我在私有 npm 存储库上发布。 在node v14.16.0 (npm v6.14.11) 下,npm publish 命令运行良好,我的包发布到了我的私有仓库。

我将 npm 升级到 7 以支持对等依赖项安装。 现在在node v15.12.0 (npm v7.6.3) 下,命令npm publish 失败并显示

“路径”参数必须是字符串类型。收到未定义

有什么想法吗?

更新

npm 7.6.3 与节点 14 效果相同:

“路径”参数必须是字符串类型

更新 2

带有标志--verbose的控制台输出

npm 动词 cli [ npm 动词 cli '.nvm/versions/node/v15.12.0/bin/node', npm 动词 cli '.nvm/versions/node/v15.12.0/bin/npm', npm 动词 cli 'publish',npm 动词 cli '--verbose' npm 动词 cli ] npm 信息 使用 npm@7.6.3 npm info 使用 node@v15.12.0 npm 计时 config:load:defaults 在 3ms 内完成 npm 计时 配置:加载:文件:.nvm/versions/node/v15.12.0/lib/node_modules/npm/npmrc 在 2 毫秒内完成 npm 计时 config:load:builtin 在 2 毫秒内完成 npm 计时配置:加载:cli 在 2 毫秒内完成 npm 计时配置:加载:env 0ms npm 定时完成 配置:加载:文件:MyProject/.npmrc 4 毫秒内完成 npm 计时 config:load:project 5 毫秒内完成 npm 计时 config:load:file:.npmrc 4ms 完成 npm 计时 config:load:user 在 4ms 内完成 npm 计时 配置:加载:文件:.nvm/versions/node/v15.12.0/etc/npmrc 在 1 毫秒内完成 npm 计时 config:load:global 在 1 毫秒内完成 npm 计时 config:load:cafile 在 0ms 内完成 npm 计时 config:load:validate 在 0ms 内完成 npm 计时 config:load:setUserAgent 在 1ms npm 计时完成 config:load:setEnvs 在 0ms 内完成 npm 计时 config:load Completed 在 18 毫秒内 npm 动词 npm-session 83e5ee6d9b1b9659 npm 计时 npm:load 在 82 毫秒内完成 npm 动词发布 [ '.' ] npm 定时命令:发布 在 25 毫秒内完成 npm 动词堆栈 TypeError [ERR_INVALID_ARG_TYPE]: The “路径”参数必须是字符串类型。收到未定义的 npm 动词 堆栈在新的 NodeError (node:internal/errors:329:5) npm 动词堆栈 在 validateString (node:internal/validators:129:11) npm 动词栈 at join (node:path:1081:7) npm 动词栈 at flatten (.nvm/versions/node/v15.12.0/lib/node_modules/npm/lib/utils/flat-options.js:50:10) Publish.publishConfigToOpts 处的 npm 动词堆栈 (.nvm/versions/node/v15.12.0/lib/node_modules/npm/lib/publish.js:140:12) Publish.publish 上的 npm 动词堆栈 (.nvm/versions/node/v15.12.0/lib/node_modules/npm/lib/publish.js:58:32)

【问题讨论】:

如果干净的 npm 安装没有帮助,您可以尝试将节点降级到 v14。像 n (***.com/questions/4244896/…) 和 github.com/nvm-sh/nvm 这样的工具将对此有所帮助。 @KunalNagpal npm 7.6.3 与节点 14 效果相同:The "path" argument must be of type string 好的,你可以试试:npm publish --verbose? @KunalNagpal 我将输出控制台添加到问题中 【参考方案1】:

我发现了问题here

解决方法是将cache 属性添加到package.jsonpublishConfig 部分

"publishConfig": 
    "cache": "cache/.npm",
    "registry": "https://mydomain/myrepo"

更新

该问题已在 npm 7.7.0 中修复

【讨论】:

问题已得到修复,如您链接到的问题所示,在 npm 7.7.0 中。 我在7.9.0 遇到问题 @vsync 有什么解决办法吗? @its4zahoor - 抱歉,我不记得了。尝试完全删除 publishConfig 属性 但这也会删除注册表信息。

以上是关于npm 发布失败,并显示““路径”参数必须是字符串类型。收到未定义”的主要内容,如果未能解决你的问题,请参考以下文章

Electron-packager - “路径”参数必须是字符串类型。接收类型未定义

“路径”参数必须是字符串类型。收到未定义。未能验证 1 份合同

“路径”参数必须是字符串类型。接收到的类型未定义 - Ionic 4 - 仅限 Windows

控制台中的电子错误““路径”参数必须是字符串类型”

npm run build-storybook 失败并显示“模块解析失败:意外令牌 (20:25)”

npm install -g expo-cli 失败并显示“EPERM:不允许操作,取消链接 '...\adb.exe'