我是html和js中的一个菜鸟,所以请原谅我,如果这是一个愚蠢的问题但是,我试图使用requireJs导出节点中的模块,我不能使该功能正常工作。 这是从示例中提取的代码。
首先我有这个main.js,正如文档中的说明http://requirejs.org/docs/node.html#2
var sayHi = require(['./greetings.js'], function(){});
console.log(sayHi);
和导出答案的greetings.js
module.exports= 'Hello';
});
并没有得到任何结果,所以我定义了导出和模块
define( function(exports,module){
module.exports= 'Hello';
});
得到结果:
function localRequire()
我在做错了什么?我阅读了文档和示例,但不知怎的,我无法做到这一点。
答案 0 :(得分:2)
我假设您正在使用的require
来电是RequireJS的require
来电,而不是节点的require
。 (否则,你会得到一个非常不同的结果。)
您正在使用require
调用的异步形式。使用异步表单,没有返回值供您使用,您必须使用回调来获取模块值,如下所示:
require(['./greetings.js'], function(sayHi){
console.log(sayHi);
});
但是,因为您在Node中运行,所以可以这样做:
var sayHi = require('./greetings.js');
注意第一个参数是字符串,而不是依赖项数组。这是require
调用的同步形式。返回的值是您需要的模块。当您在Node中时,RequireJS允许您在任何地方调用此同步表单。当您运行浏览器时,它仅在define
电话中可用。