5

我使用的是 Verdaccio,它是一个内置在 Node.js 中的轻量级私有 npm 代理注册表

当我将我的代码发布到 verdaccio 时,它总是有一个错误:

在此处输入图像描述

日志文件关键字:15 通知 === 压缩包详细信息 === 16 通知名称:canwin-viewer3d 16 通知版本:1.0.0 16 通知包大小:21.9 MB 16 通知未打包大小:50.4 MB 16 通知 shasum:63d555be03e0c7a7b6dcdfb662d29c48b21d8c53 16通知完整性:sha512-KFz0gTPJusdfV[...]VIeII6rrcv4IA== 16 通知总文件:733 17 通知 18 http fetch PUT 413 http://localhost:4873/canwin-viewer3d 677ms 19 详细堆栈错误:413 Payload Too Large - PUT http://localhost:4873/canwin-viewer3d - 请求实体太大 19 详细堆栈位于 C:\Program Files\nodejs\node_modules\npm\node_modules\npm-registry-fetch\check-response.js:104:15 19 processTicksAndRejections (internal/process/task_queues.js:97:5) 的详细堆栈 20 详细状态代码 413 21 详细 pkgid canwin-viewer3d@1.0.0 22 详细 cwd C:\work\viewer3d 23 详细 Windows_NT 10.0.18363 24 详细 argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "publish" 25 详细节点 v13.10.1 26 详细 npm v6.13.7 27 错误代码 E413

似乎 PUT Quest PayLoad 很大,所以我尝试找到 verdaccio 配置文件,但我什么也没有,verdaccio 它的代码可能使用 node express 运行,我该如何设置 Put Payload 大小?

4

1 回答 1

6

因此,通常您会面临 413 错误的两个问题。

  • Verdaccio 默认正文大小为 1 MB,因此您必须在客户端增加它:

npm config set max_body_size 100mb --registry https://<your registry>

  • 如果这不起作用,那么您可能需要按照文档的建议在服务器端增加它。将以下行添加到配置文件中。

值.yaml

...

  max_body_size: 100mb

....
  • 如果这仍然不起作用,那么很可能您的代理有问题。

如果这是nginx代理,您可以尝试:

http {
    ...
    client_max_body_size 100M;
} 

或者,如果这是一个node.js服务器,您可以使用该线程bodyParser中详细描述的:

var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
于 2020-10-14T07:37:12.243 回答