3

我很困惑,我需要为meteor.js fw 使用fs 包。

从流星版本 0.6> 我需要像这样使用 Npm.require:

var fs = Npm.require('fs');

但是当我这样做时会出现错误:npm is not defined

如何解决?我试过 mrt add npm 但是嗯...

顺便说一句:我有 /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 {... 解决了这个错误,但如果有人能好奇地向我解释为什么它不像上面那样工作?

4

4 回答 4

2

您需要package.js在您的应用程序或智能包中添加明确指定依赖项的智能包,Npm.depends然后才能使用Npm.require. Npm.depends如果您使用内置npm包(例如 ) ,则不需要或 smart 包fs,但您仍然需要确保在服务器端而不是客户端使用它。

例如,查看package.js我的 Meteor 包的文件,该包引入了 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/

于 2013-07-11T18:48:59.903 回答
1

它是Npm,不是npm,在你的问题中你同时使用。Javascript 区分大小写,请确保使用正确的Npm格式。

于 2013-07-11T15:32:57.240 回答
0

不是要贬低,但是...您可能想要使用的另一个选项是 Meteor 文件结构本身。你可以绕过 NPM 并在 Meteor 中使用你的资产。在 Meteor 中,您可以访问您私人文件夹中的内容var data = Assets.getText("example.txt").toString().split("\n");,例如,如果您想将文档转换为单词数组。这只是一个例子。我不确定你需要做什么。:)

于 2015-03-31T01:54:05.967 回答
-1

由于“fs”是节点的一部分,您可以简单地执行以下操作: var fs = Meteor.require('fs');

于 2013-07-11T20:57:35.587 回答