所以我有一堆数据要从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文件?
答案 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文件的位置。