File upload 中止上载导致Sails js/Skipper崩溃
参考: 适配器:skipper gridfs 基本控制器代码:File upload 中止上载导致Sails js/Skipper崩溃,file-upload,sails.js,skipper,File Upload,Sails.js,Skipper,参考: 适配器:skipper gridfs 基本控制器代码: req.file('fileTest') .upload({ // You can apply a file upload limit (in bytes) maxBytes: maxUpload, adapter: require('skipper-gridfs'), uri: bucketConnect, saveAs : func
req.file('fileTest')
.upload({
// You can apply a file upload limit (in bytes)
maxBytes: maxUpload,
adapter: require('skipper-gridfs'),
uri: bucketConnect,
saveAs : function (__newFileStream,cb) {
cb(null, __newFileStream.filename);
}
}, function whenDone(err, uploadedFiles) {
if (err) {
var error = { "status": 500, "error" : err };
return res.serverError(error);
}else {
我有一个jQuery文件上载客户端(),它使用这里描述的jqXHR abort()执行“取消”过程:
客户端中止后,服务器崩溃,并显示以下消息:
events.js:72
throw er; // Unhandled 'error' event
^
Error: Request aborted
at IncomingMessage.onReqAborted (.../node_modules/sails/node_modules/skipper/node_modules/multiparty/index.js:175:17)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at abortIncoming (http.js:1911:11)
at Socket.serverSocketCloseListener (http.js:1923:5)
at Socket.EventEmitter.emit (events.js:117:20)
at TCP.close (net.js:466:12)
我使用了try/catch,但它不起作用,服务器还是崩溃了
我不确定这是一个船长问题还是一个多方问题——我的知识到此为止():
起初,我认为这是jqXHR请求被中止的方式,但这似乎是中止上载时的一个常见跳过问题,因为在上载过程中关闭选项卡的简单动作会使服务器崩溃(不同的消息):
那么,有人看到这种情况发生了吗?有什么解决办法吗?这个问题在skipper@0.5.4船长-disk@0.5.4
参考资料:另外,skipper中存在一个问题-gridfs@0.5.3
链接:我也有同样的问题。显然,它与Skipper磁盘文件适配器()有关。因此,解决方法可能是使用另一个适配器。您也可以使用这个临时解决方案:我不确定:对我来说,这个问题只在我使用GridFS适配器时发生。使用skipper磁盘时,您可以在不使服务器崩溃的情况下剪切上载。我还没有试过skipper-S3,因为我不熟悉AWS吊桶的使用,但这在我的清单上。最后,我发现我的问题与角度而不是帆有关。Angular将序列化要上载的数据,这将使航行崩溃。这里解释了我的角度问题的解决方案:谢谢卢森。如果一个客户端请求可以使sail停止,那么这是一个关键问题。我在他们的Github问题页面上提出了这个问题,但我没有看到任何活动。嗨@mikermcneil,实际上这似乎仍然是个问题。根据49号问题的建议,我正在与
域
一起解决这个问题。否则,Sails仍将崩溃:-(刚刚重新打开此问题并将尽快查看-感谢您让我知道!这实际上是上载周期引发的最后一个错误。在中的回调捕获第一个错误后,将引发两个错误。上载。
events.js:72
throw er; // Unhandled 'error' event
^
Error: Request aborted
at IncomingMessage.onReqAborted (.../node_modules/sails/node_modules/skipper/node_modules/multiparty/index.js:175:17)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at abortIncoming (http.js:1911:11)
at Socket.serverSocketCloseListener (http.js:1923:5)
at Socket.EventEmitter.emit (events.js:117:20)
at TCP.close (net.js:466:12)
function onReqAborted() {
waitend = false;
self.emit('aborted');
handleError(new Error("Request aborted"));
}
function onReqEnd() {
waitend = false;
}
function handleError(err) {
var first = !self.error;
if (first) {
self.error = err;
req.removeListener('aborted', onReqAborted);
req.removeListener('end', onReqEnd);
if (self.destStream) {
self.destStream.emit('error', err);
}
}
cleanupOpenFiles(self);
if (first) {
self.emit('error', err);
}
}
_stream_writable.js:233
cb(er);
^
TypeError: object is not a function
at onwriteError (_stream_writable.js:233:5)
at onwrite (_stream_writable.js:253:5)
at WritableState.onwrite (_stream_writable.js:97:5)
at Writable.<anonymous> (.../node_modules/skipper-gridfs/index.js:179:25)
at Writable.g (events.js:180:16)
at Writable.EventEmitter.emit (events.js:117:20)
at PassThrough.<anonymous> (.../node_modules/skipper-gridfs/index.js:194:36)
at PassThrough.g (events.js:180:16)
at PassThrough.EventEmitter.emit (events.js:117:20)
at .../node_modules/sails/node_modules/skipper/standalone/Upstream/prototype.fatalIncomingError.js:55:17
var uploadFile = req.file('fileTest');
console.log(uploadFile);
uploadFile.upload(function onUploadComplete (err, files) { // Files will be uploaded to .tmp/uploads
if (err) return res.serverError(err); // IF ERROR Return and send 500 error with error
console.log(files);
res.json({status:200,file:files});
});