6

CSVからデータベースにロードしたいデータがたくさんあります。ローカル開発で機能するソリューションをハックしましたが、meteor.com にデプロイすると機能しなくなります。

フォルダー /server/data/ に csv ファイルをロードしています。

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 のヒントに感謝します。私は問題が何であるかを理解することになりました。バンドルされたアプリは、クライアント、パブリック、およびサーバーとしてフォーマットされていないことが判明しました。meteor bundle を実行して tarball を作成することで、最終的にデバッグしました。tarball を抽出し、データ フォルダーの場所を見つけるために内部を調べました。Tom は、データ フォルダーがバンドルされるためにパブリック フォルダーにある必要があることも正しかった.

于 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 に答える