部署后,流星读取CSV文件以填充数据库不起作用

时间:2012-08-28 01:37:50

标签: meteor

所以我有一堆数据要从CSV加载到数据库中。我已经将一个适用于本地开发的解决方案整合在一起,但是当我部署到meteor.com时,它不再有效。

我将csv文件加载到文件夹/ server / data /:

function readData(name){
    var fs = __meteor_bootstrap__.require('fs');   
    var path = __meteor_bootstrap__.require('path');   
    var base = path.resolve('.');
    var data = fs.readFileSync(path.join(base, '/server/data/', name));
    return CSVToArray(data);
}

在我部署到meteor.com之后,我得到了:

INFO Error: ENOENT, no such file or directory '/meteor/containers/98eb1286-120b-ee84-8e98-ce673fa2eab7/public/data/categories.csv'
    at Object.openSync (fs.js:240:18)
    at Object.readFileSync (fs.js:128:15)
    at readData (app/server/models.js:10:16)
    at app/server/categories.js:6:7
    at /meteor/containers/98eb1286-120b-ee84-8e98-ce673fa2eab7/bundle/server/server.js:132:63
    at Array.forEach (native)
    at Function.<anonymous> (/meteor/containers/98eb1286-120b-ee84-8e98-ce673fa2eab7/bundle/server/underscore.js:76:11)
    at /meteor/containers/98eb1286-120b-ee84-8e98-ce673fa2eab7/bundle/server/server.js:132:7

我知道如何在部署后让meteor看到csv文件?

4 个答案:

答案 0 :(得分:3)

我意识到这个问题已经过时了,但在某些关键字搜索方面仍然排名很高。因此,如果您使用 Meteor 0.6.5 + ,则可以使用新的Assets API

答案 1 :(得分:2)

问题是meteor在部署时只捆绑它知道的文件(即JS / CSS / HTML / +,取决于你使用的软件包)。

尝试将您需要的文件放在public目录中(此目录不受上述规则约束)。

答案 2 :(得分:2)

感谢SamuelDavis和Tom Coleman的提示。我最终搞清楚问题是什么。事实证明,捆绑的应用程序不再构成客户端,公共和服务器。我最终通过运行meteor bundle来创建一个tarball来调试它。提取tarball并查看内部以找到数据文件夹的位置。 Tom也是正确的,数据文件夹需要在公共文件夹中才能捆绑在一起。

答案 3 :(得分:1)

基本目录似乎不在包含文件'/server/data/xxx.csv'的同一位置。

在尝试其他任何操作之前,请在调用“var base = path.resolve('。')后记录基本路径。如果该值符合您的预期,请记录该目录中显示的文件。如果文件是您的期望,导航到/ server文件夹并打印出这些目录等等。

这应该指出您缺少哪个文件夹和/或目录,并指出将来放置CSV文件的位置。