Meteor's CollectionFS download Error: write after end
Meteor's CollectionFS download Error: write after end
这个问题只出现在生产阶段,开发阶段 - 很有魅力。
当用户尝试通过 link 下载通过助手生成的文件时:
<a href="{{fileRef.url download=true}}">Download</a>
在服务器端 node.js 失败,forever
重新启动它,并回显此错误:
Error: write after end
at ServerResponse.OutgoingMessage.write (_http_outgoing.js:413:15)
at ServerResponse.http.OutgoingMessage.write (packages/meteorhacks:inject-data/lib/server.js:56:1)
at ServerResponse.res.write (/var/node/bundle/programs/server/npm/webapp/node_modules/connect/lib/middleware/compress.js:110:17)
at ServerResponse.res.end (/var/node/bundle/programs/server/npm/webapp/node_modules/connect/lib/middleware/compress.js:116:14)
at sendResponseIfDone (packages/cfs:http-methods/http.methods.server.api.js:543:1)
at IncomingMessage.<anonymous> (packages/cfs:http-methods/http.methods.server.api.js:568:1)
at IncomingMessage.emit (events.js:104:17)
at _stream_readable.js:908:16
at process._tickCallback (node.js:355:11)
error: Forever detected script exited with code: 1
error: Script restart attempt #1
在客户端上,文件只下载了一部分,我猜 - 只下载了第一块。
我们已经尝试更改 nginx 反向代理缓存、缓冲区设置,甚至关闭 - 根本没有帮助。
知道如何修复或在哪里查找错误吗?非常感谢任何帮助。
集合初始化代码:
path = (if (NODE_ENV is "development") then "/uploads/Addresses" else "/builded/bundle/programs/server/assets/app/uploads/Addresses")
Collections.Addresses = new FS.Collection 'Addresses',
stores: [
new FS.Store.FileSystem 'Addresses' ,
path: path
]
,
filter:
allow:
extensions: ['xls', 'xlsx']
if Meteor.isServer
Meteor.startup ->
Collections.Addresses.allow
insert: (userId) ->
return checkFunc userId
remove: (userId) ->
return checkFunc userId
update: (userId) ->
return checkFunc userId
download: (userId) ->
return checkFunc userId
Meteor.publish 'Addresses', (ProjectID) ->
check ProjectID, Mongo.ObjectID
if checkFunc this.userId
Collections.Addresses.find
'metadata.project_id': ProjectID
else
throw new Meteor.Error 403, 'Permission denied'
@tristan-foureur 感谢您的回复。
但是我们被这个包困住了,它也大大降低了我们的应用程序的速度,不支持文件名中的非拉丁符号并且对大文件有限制 upload/download.
我们花了两周时间研究并创建了我们自己的包:Meteor-Files。它时尚且易于使用。你的手是自由的,你可以自由地对上传的文件做任何事情,修改,调整图像大小,如果你愿意的话甚至可以存储到 GridFS。
我们希望我们的软件包能够帮助其他开发人员解决 upload/download 文件等简单任务。陨石合一!
这个问题只出现在生产阶段,开发阶段 - 很有魅力。
当用户尝试通过 link 下载通过助手生成的文件时:
<a href="{{fileRef.url download=true}}">Download</a>
在服务器端 node.js 失败,forever
重新启动它,并回显此错误:
Error: write after end
at ServerResponse.OutgoingMessage.write (_http_outgoing.js:413:15)
at ServerResponse.http.OutgoingMessage.write (packages/meteorhacks:inject-data/lib/server.js:56:1)
at ServerResponse.res.write (/var/node/bundle/programs/server/npm/webapp/node_modules/connect/lib/middleware/compress.js:110:17)
at ServerResponse.res.end (/var/node/bundle/programs/server/npm/webapp/node_modules/connect/lib/middleware/compress.js:116:14)
at sendResponseIfDone (packages/cfs:http-methods/http.methods.server.api.js:543:1)
at IncomingMessage.<anonymous> (packages/cfs:http-methods/http.methods.server.api.js:568:1)
at IncomingMessage.emit (events.js:104:17)
at _stream_readable.js:908:16
at process._tickCallback (node.js:355:11)
error: Forever detected script exited with code: 1
error: Script restart attempt #1
在客户端上,文件只下载了一部分,我猜 - 只下载了第一块。 我们已经尝试更改 nginx 反向代理缓存、缓冲区设置,甚至关闭 - 根本没有帮助。
知道如何修复或在哪里查找错误吗?非常感谢任何帮助。
集合初始化代码:
path = (if (NODE_ENV is "development") then "/uploads/Addresses" else "/builded/bundle/programs/server/assets/app/uploads/Addresses")
Collections.Addresses = new FS.Collection 'Addresses',
stores: [
new FS.Store.FileSystem 'Addresses' ,
path: path
]
,
filter:
allow:
extensions: ['xls', 'xlsx']
if Meteor.isServer
Meteor.startup ->
Collections.Addresses.allow
insert: (userId) ->
return checkFunc userId
remove: (userId) ->
return checkFunc userId
update: (userId) ->
return checkFunc userId
download: (userId) ->
return checkFunc userId
Meteor.publish 'Addresses', (ProjectID) ->
check ProjectID, Mongo.ObjectID
if checkFunc this.userId
Collections.Addresses.find
'metadata.project_id': ProjectID
else
throw new Meteor.Error 403, 'Permission denied'
@tristan-foureur 感谢您的回复。 但是我们被这个包困住了,它也大大降低了我们的应用程序的速度,不支持文件名中的非拉丁符号并且对大文件有限制 upload/download.
我们花了两周时间研究并创建了我们自己的包:Meteor-Files。它时尚且易于使用。你的手是自由的,你可以自由地对上传的文件做任何事情,修改,调整图像大小,如果你愿意的话甚至可以存储到 GridFS。
我们希望我们的软件包能够帮助其他开发人员解决 upload/download 文件等简单任务。陨石合一!