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

我正在使用一些节点代码

module.exports = a; 

这使:

 ReferenceError: module is not defined 

那么分别推荐的解决方法是什么? 我宁愿有一些简单的已知代码,而不是安装一个“神奇地”使这项工作的软件包。

这是怎么回事? meteor服务器代码以某种方式运行在不是节点? 我知道我们有纤维包装,但我不认为你可以“定义”一些对节点环境至关重要的东西?

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

Meteor使用vm模块创build新的上下文。 我也怀疑plain node.js也是如此,关键字module没有什么“根本”。 在node.js加载器下将所有文件封装到闭包中,并将诸如__dirname特殊variables__dirname给它们。

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

我看到相同的错误,并从我的meteor项目删除node_modules目录做了诡计。

在任何文章或者自述文件中没有清楚的是你所需要的只是packages.json文件。 我以为我需要自己安装npm,但是这是错误的,那些安装的npm与那些有点像npm的软件有冲突:npm installs,基于packages.json

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

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

这对你有用吗?