Meteor的CollectionFS下载错误:写完后

时间:2015-04-10 16:22:15

标签: node.js meteor collectionfs

此问题仅出现在制作阶段,开发阶段 - 就像魅力一样。

当用户尝试通过帮助程序生成的链接下载文件时:

<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'

1 个答案:

答案 0 :(得分:0)

@tristan-foureur感谢您的回复。 但我们坚持使用这个软件包,它也大大减慢了我们的应用程序,不支持文件名中的非拉丁符号,并限制大文件上传/下载。

我们花了两周时间进行研究并创建了我们自己的软件包:Meteor-Files。它外观时尚,易于使用。你的手被解开了,你可以自由地对上传的文件做任何事情,修改,调整图像大小,甚至可以存储到GridFS。

我们希望我们的软件包能够帮助解决上传/下载文件到其他开发人员的简单任务。陨石团结起来!