我试图弄清楚我从这个难题之间错过了什么。Node.js和Meteor.js。流星是建立在Node.js我知道这一点。但是流星不能正常工作与Node.js。要么我需要再做20步才能得到相同的结果,我不知道它们是什么。或者两者之间存在严重的错误。独立Node.js运行下面的命令就可以了。在Meteor上运行相同的命令会导致错误或未定义的结果。希望我有一个为什么来解决这个问题,或者他们需要修补这个问题,这样它就能正常工作了。
examples #1
var fs = require('fs');
fs.readFile('file.txt', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
console.log(data);
});
example #2
var jetpack = require('fs-jetpack');
var data = jetpack.read('file.txt');
console.log(data);
example #3
var fs = require ('fs');
var readMe = fs.readFileSync('file.txt', 'utf8');
console.log(readMe);
您不应该尝试这样加载文件,因为您不知道文件夹结构是什么样子的。Meteor从您的项目目录创建构建,包括开发模式和生产模式。这意味着,即使您在项目文件夹中有一个file.txt
,它也不会在构建中出现在相同的位置(或者它甚至根本不包括在构建中)。
例如,您的代码尝试从开发构建文件夹.meteor/local/build/programs/server
读取文件。但是,此文件夹不包含file.txt
。
解决方案:将file.txt
存储在项目的private
文件夹中,并使用Assets.getText
读取它。如果仍然希望使用fs
中的函数来加载文件,可以使用Assets.absoluteFilePath
检索绝对路径。