meteor.js和npm需要fs

时间:2013-07-11 15:19:28

标签: javascript node.js meteor npm fs

我很困惑,我需要为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可以从好奇心向我解释为什么它不像上面那样工作?

4 个答案:

答案 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');