我使用了一些
的节点代码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
答案 0 :(得分:1)
Meteor使用vm
模块创建新的上下文。我怀疑plain node.js也是如此,关键字module
没有任何“基础”。在引擎盖下,node.js loader将所有文件包装到闭包中,并将特殊变量(如__dirname
)传递给它们。
答案 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() {
...
};
})();
这对你有用吗?