尝试使用express将大文件上传到node js实例,大文件会失败。
出现以下错误消息:
Error: Request aborted
at IncomingMessage.<anonymous> (/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:107:19)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at abortIncoming (http.js:1892:11)
at Socket.serverSocketCloseListener (http.js:1904:5)
at Socket.EventEmitter.emit (events.js:117:20)
at TCP.close (net.js:466:12)
/server/upload/
buffer.js:194
this.parent = new SlowBuffer(this.length);
^
RangeError: length > kMaxLength
at new Buffer (buffer.js:194:21)
at fs.js:220:16
at Object.oncomplete (fs.js:107:15)
31 Jul 14:01:04 - [nodemon] app crashed - waiting for file changes before starting...
当我不想对数据进行分块时,我可以采取什么措施来防止此错误?
希望有人能帮忙解决;-)
如果你分析一下错误信息
buffer.js:194
this.parent = new SlowBuffer(this.length);
^
RangeError: length > kMaxLength
您可以看到 kMaxLength 是一个常量,指定进程的内存限制。
From https://github.com/joyent/node/wiki/FAQ https://github.com/joyent/node/wiki/FAQ
目前,默认情况下 v8 在 32 位上的内存限制为 512mb
系统,64 位系统上为 1GB。可以通过设置来提高限制
--max-old-space-size 最大为 ~1gb(32 位)和 ~1.7gb(64 位),但建议您拆分单个进程
如果您达到内存限制,则将其分配给多个工作人员。
所以你可以使用标志执行节点
node --max-old-space-size=2000 app.js
标志单位以 MB 为单位,请参阅 (https://github.com/joyent/node/blob/master/deps/v8/ChangeLog https://github.com/joyent/node/blob/master/deps/v8/ChangeLog)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)