我很困惑,我需要为meteor.js fw使用fs包。
来自meteor版本0.6>我需要像这样使用Npm.require:
var fs = Npm.require('fs');
但是当我这样做时会出现错误:npm未定义
如何解决?我尝试了mrt add npm但是hm ......
BTW:我有/ root / packages / npm
修改 我的代码位于客户端/服务器端文件夹中,因此我将其移动到服务器块
var fs;
if(Meteor.isServer) {
fs = Meteor.require('fs');
}
fs.writeFile(path + name,...
GETTING ERROR: Cannot call a method writeFile of undefined
解决 好吧,我通过将整个内容包装到Meteor.isServer来解决错误{...但是如果someoen可以从好奇心向我解释为什么它不像上面那样工作?
答案 0 :(得分:2)
您需要在应用中添加package.js
或智能包,通过Npm.depends
明确指定依赖关系,然后才能使用Npm.require
。如果您使用内置的Npm.depends
软件包(例如npm
),则不需要fs
或智能软件包,但仍需要确保在服务器端,而不是客户端。
例如,查看我的Meteor包中的package.js
文件,该文件包含了ShareJS:
https://github.com/mizzao/meteor-sharejs/blob/master/sharejs-ace/package.js
另见这篇文章: http://shiggyenterprises.wordpress.com/2013/05/16/accessing-the-file-system-in-meteor/
答案 1 :(得分:1)
它是Npm
,而不是npm
,在你的问题中你同时使用它们。 Javascript区分大小写,请确保使用正确的Npm
表单。
答案 2 :(得分:0)
不要减损,但是......您可能想要使用的另一个选项是Meteor文件结构本身。您可以绕过NPM并在Meteor中使用资产。在Meteor中,私有文件夹中的内容可以通过类似var data = Assets.getText("example.txt").toString().split("\n");
的内容访问,例如,如果您想将文档转换为单词数组。这只是一个例子。我不确定你需要做什么。 :)
答案 3 :(得分:-1)
由于“fs”是节点的一部分,您可以简单地执行:
var fs = Meteor.require('fs');