与服务器端流星,为什么“模块”没有定义?

时间:2015-02-03 01:00:46

标签: node.js meteor

我使用了一些

的节点代码
module.exports  = a;

给出:

ReferenceError: module is not defined

然后单独建议的解决方法是什么?我宁愿拥有一些简单的已知代码而不是安装一个神奇的"神奇的"使这项工作。

这是怎么回事?流星服务器代码以某种方式运行的东西不是节点吗?我知道我们有纤维包裹但我不认为你可以" undefine"什么是节点环境的基础?

W20150202-16:07:12.555(-8)? (STDERR) /Users/dc/.meteor/packages/meteor-tool/.1.0.40.prjwsp++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:173 W20150202-16:07:12.555(-8)? (STDERR) throw(ex); W20150202-16:07:12.555(-8)? (STDERR) ^ W20150202-16:07:12.596(-8)? (STDERR) ReferenceError: module is not defined W20150202-16:07:12.596(-8)? (STDERR) at __coffeescriptShare (packages/dcsan:ribot/vendor/rivescript-js/lib/rivescript.js:2913:1) W20150202-16:07:12.596(-8)? (STDERR) at RiveScript (packages/dcsan:ribot/vendor/rivescript-js/lib/rivescript.js:2910:1) W20150202-16:07:12.596(-8)? (STDERR) at __coffeescriptShare (packages/dcsan:ribot/vendor/rivescript-js/lib/rivescript.js:2911:1) W20150202-16:07:12.597(-8)? (STDERR) at /Users/dc/dev/shumi/chatU/app/.meteor/local/build/programs/server/packages/dcsan_ribot.js:2937:4 W20150202-16:07:12.597(-8)? (STDERR) at packages/dcsan:ribot/both/startup.coffee:13:23 W20150202-16:07:12.597(-8)? (STDERR) at /Users/dc/dev/shumi/chatU/app/.meteor/local/build/programs/server/boot.js:205:10

3 个答案:

答案 0 :(得分:1)

Meteor使用vm模块创建新的上下文。我怀疑plain node.js也是如此,关键字module没有任何“基础”。在引擎盖下,node.js loader将所有文件包装到闭包中,并将特殊变量(如__dirname)传递给它们。

http://nodejs.org/api/vm.html

答案 1 :(得分:1)

我看到同样的错误,从我的meteor项目中删除node_modules目录就行了。

在任何文章或自述文件中都没有明确指出,您需要的所有packages.json文件。我以为我需要自己安装npm,但这是错误的,那些安装了npm与meteorhacks的那些冲突:npm安装,基于packages.json

答案 2 :(得分:1)

在尝试为Chimp定义Cucumber步骤时遇到了同样的问题。我设法通过这样包装module.exports来解决它:

(function() {
  'use strict';
  module.exports = function() {
    ...
  };
})();

这对你有用吗?