Nodejs 如何设置允许publish一个包含大文件的package

Nodejs 如何设置允许publish一个包含大文件的package

用官方代码搭建了一个npm私有库,然后发现当一个package中某个文件较大(比如说16M),npm publish时会返回400,而此时私有库的couchdb控制台显示:

2014-06-11T07:33:05.238Z ERROR Payload content length greater than maximum allowed: 10000000
2014-06-11T07:33:05.241Z INFO,REQUEST 192.168.65.145 PUT /test 400

从这句信息来看,应该是post数据过大导致,但是这个maximum content length应该在哪设置呢?

google无果,扫couchdb/npmjs.org/mochiweb代码无果。Thx in advance.

3 回复

要解决这个问题,我们需要调整npm服务器的配置以允许上传更大的文件。具体来说,我们需要修改CouchDB或npm私有库服务器上的最大请求体大小限制。

以下是一个具体的步骤指南,包括如何在你的npm私有库服务器上进行相应的配置:

步骤1:找到配置文件

首先,你需要找到你的npm私有库服务器的配置文件。如果你使用的是CouchDB作为后端存储,那么配置文件通常是local.inidefault.ini,位于CouchDB的安装目录下。

步骤2:编辑配置文件

打开上述配置文件,并找到与HTTP请求大小相关的配置项。通常,这个配置项被称为max_http_request_size。你可以通过以下方式修改它:

[httpd]
max_http_request_size = 50000000 ; 设置为50MB

这里的50000000表示50MB。根据需要调整这个值以适应你的需求。

步骤3:重启服务

修改配置文件后,确保重启CouchDB服务以使更改生效。你可以使用以下命令重启CouchDB:

sudo systemctl restart couchdb

或者,如果你使用的是其他操作系统或部署方式,可以查阅相关文档来了解正确的重启方法。

示例代码

虽然上述步骤不涉及直接的Node.js代码,但你可以创建一个简单的脚本来检查当前的配置是否生效:

const axios = require('axios');

async function checkMaxSize() {
    try {
        const response = await axios.get('http://your-npm-server-url/_config/httpd');
        console.log(response.data.max_http_request_size);
    } catch (error) {
        console.error(error);
    }
}

checkMaxSize();

your-npm-server-url替换为你实际的npm服务器地址。

总结

通过上述步骤,你可以成功地调整npm私有库服务器的最大请求体大小限制,从而允许上传包含大文件的package。这不仅解决了你遇到的具体问题,也为你将来可能遇到类似问题提供了解决方案。


找到原因了。由于之前我用了kappa做代理,而kappa有一个单次上行最大流量的控制。但这个错误居然是在couchdb中报出来的,导致我走向了错误的方向。。

要在 npm 私有库中发布包含大文件的包,需要调整 CouchDB 的配置以允许更大的文件上传。CouchDB 默认对请求体大小有限制,因此您需要修改 CouchDB 的配置来增加这个限制。

修改 CouchDB 配置

  1. 找到 CouchDB 的配置文件:通常位于 CouchDB 安装目录下的 local.ini 文件。

  2. 修改 [httpd][httpd_global_handlers] 部分,添加或修改以下配置:

    [httpd]
    max_http_request_size = 50000000 ; 设置为 50MB,可以根据需要调整
  3. 重启 CouchDB 服务以应用新的配置:

    systemctl restart couchdb
    # 或者
    service couchdb restart

示例配置

假设您已经找到了 local.ini 文件,并且在 [httpd] 部分增加了以下内容:

[httpd]
max_http_request_size = 50000000

保存并关闭文件后,执行上述重启命令。

其他注意事项

  • 检查网络和权限:确保您的网络环境允许传输较大的文件,并且用户有足够的权限发布包。
  • 优化文件:如果可能,考虑优化文件以减少其大小,而不是仅仅增加限制。
  • 测试:在实际发布之前,使用较小的文件进行测试,以确保所有配置正确无误。

通过以上步骤,您可以解决由于文件过大而导致的 npm publish 失败问题。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!