meteor.js 和 npm 需要 fs
Posted
技术标签:
【中文标题】meteor.js 和 npm 需要 fs【英文标题】:meteor.js and npm require fs 【发布时间】:2013-07-09 23:00:11 【问题描述】:我很困惑,我需要为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 ... 解决了这个错误,但如果有人能好奇地向我解释为什么它不像上面那样工作?
【问题讨论】:
你能运行 mrt --version 并检查你的流星版本吗? 对您的附加问题:您尝试使用 Npm 服务器还是客户端? (你可以只在服务器端使用它) 在发布问题之前,我已经运行了 mrt --version。我猜是0.6.4。在收藏夹中,我不确定它是哪一边? Meteor.isServer 块之外的代码也在客户端上执行,并且由于没有在那里定义“fs”,它会引发错误。 【参考方案1】:不是为了减损,而是...您可能想要使用的另一个选项是 Meteor 文件结构本身。您可以绕过 NPM 并在 Meteor 中使用您的 Assets。在 Meteor 中,您可以通过 var data = Assets.getText("example.txt").toString().split("\n");
之类的方式访问您私人文件夹中的内容,例如,如果您想将文档转换为单词数组。这只是一个例子。我不确定你需要做什么。 :)
【讨论】:
【参考方案2】:您需要在您的应用中添加package.js
或通过Npm.depends
明确指定依赖关系的智能包,然后才能使用Npm.require
。如果您使用的是内置的npm
包(例如fs
),则不需要Npm.depends
或智能包,但您仍然需要确保在服务器端使用它而不是在客户端。
例如,查看我的 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/
【讨论】:
谢谢回复,我以前看过这个帖子,但我不知道如何处理它。顺便说一句:我的要求在 /collections 文件夹中。在 Meteor.methods( // 可能是服务器端?【参考方案3】:由于“fs”是节点的一部分,您可以简单地执行以下操作:
var fs = Meteor.require('fs');
【讨论】:
我以前试过,现在又报错:object object has no method require. 这很奇怪。我刚刚尝试了一个全新的项目并且它有效。我所做的是mrt add npm
,然后是mrt
来运行服务器并安装所需的 npms,它就可以工作了。
你把代码放在哪里了?我在 /collections 文件夹中有它
我不经常使用 SO,而且我不确定如何查看通知,但您通常会将其放在仅服务器代码中。 fs 不能用于客户端。【参考方案4】:
它是Npm
,而不是npm
,在你的问题中你同时使用了这两个。 javascript 区分大小写,请确保使用正确的Npm
格式。
【讨论】:
我认为 OP 指的是这个:github.com/oortcloud/…以上是关于meteor.js 和 npm 需要 fs的主要内容,如果未能解决你的问题,请参考以下文章
CollectionFS、Meteor.js、Summernote(所见即所得)和文件上传