だから私はiron:routerでこれを解決しました。meteor フォルダーassets
の外に、 フォルダーを作成しました。次に、ファイルを提供するためにこのようなコードがあります
var fs = Npm.require('fs');
var path = Npm.require('path');
Router.map(function () {
this.route('assets', {
where: 'server',
path: '/assets/:filename(.*)',
action: function() {
var basePath = process.env.ASSET_PATH;
var filename = path.normalize(path.join(basePath, this.params.filename));
var res = this.response;
if (filename.substr(0, basePath.length) != basePath ||
!fs.existsSync(filename) ||
!fs.statSync(filename).isFile()) {
res.writeHead(404, {'Content-Type': 'text/html'});
res.end('404: no such asset: ' + this.params.filename);
return;
}
var data = fs.readFileSync(filename);
var mimeType = mime.lookup(filename);
res.writeHead(200, { 'Content-Type': mimeType });
res.write(data);
res.end();
},
});
});
Mimeルックアップは次のようになります
var mime = {
lookup: (function() {
var mimeTypes = {
".html": "text/html",
".js": "application/javascript",
".json": "application/json",
".png": "image/png",
".gif": "image/gif",
".jpg": "image/jpg",
};
return function(name) {
var type = mimeTypes[path.extname(name)];
return type || "text/html";
};
}()),
};
そのコードはサーバー上でのみ実行されるため、サーバーフォルダーに配置するか、チェックされていることを確認してif (Meteor.isServer)
ください。
上記のように、アセット フォルダーへのパスに環境変数を使用しています。だから私はこのように隕石を走らせることができます
ASSET_PATH=/some/path/to/assets meteor
およびモジュールにはmeteorhacks:npmモジュールも使用しています。fs
path