我按照http://requirejs.org/docs/api.html#packages来了解RequireJs如何加载CommonJS模块,但我无法得到它。
我有以下文件。
富/ foo.js main.js require.js
foo / foo.js,内容为:
exports.bar = '1234';
exports.xyz = function noop() {};
main.js:
requirejs.config({
packages: [{name:'foo', main: 'foo'}]
});
require(['foo'], function(foo) {
console.log(foo.bar);
});
它说不能读取未定义的栏
答案 0 :(得分:0)
您错过了在问题中链接到的文档的重要部分:
虽然软件包可以具有CommonJS目录布局,但模块本身应该是RequireJS可以理解的模块格式。规则的例外情况:如果您使用的是r.js节点适配器,则模块可以采用传统的CommonJS模块格式。如果需要将传统的CommonJS模块转换为RequireJS使用的异步模块格式,则可以使用CommonJS转换器工具。
(强调补充。)
这不是RequireJS理解的内容:
exports.bar = '1234';
exports.xyz = function noop() {};
必须是:
define(function(require, exports, module) {
exports.bar = '1234';
exports.xyz = function noop() {};
});
您可以手动执行此转换,也可以使用r.js -convert
为您执行转换。