6

所以我有一堆数据要从 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

知道如何在部署后让流星查看 csv 文件吗?

4

4 回答 4

3

我意识到这个问题很老了,但它在某些关键字搜索中仍然排名很高。所以,如果你使用Meteor 0.6.5+,你可以使用新的Assets API

于 2013-09-27T16:47:32.973 回答
2

感谢 SamuelDavis 和 Tom Coleman 的提示。我最终弄清楚了问题所在。原来捆绑的应用程序不再格式化为客户端、公共和服务器。我最终通过运行流星包来创建一个压缩包来调试它。提取 tarball 并查看内部以找到数据文件夹的位置。汤姆也是对的,数据文件夹需要在公用文件夹中才能被捆绑。

于 2012-08-28T07:37:20.100 回答
2

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

试着把你需要的文件放到public目录下(这个目录不受上述规则的约束)。

于 2012-08-28T06:52:08.530 回答
1

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

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

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

于 2012-08-28T04:34:00.160 回答