Javascript 模块.exports“;“模块未定义”;
因此,我正在使用RequireJS和React,尝试加载第三方组件,该组件已安装:Javascript 模块.exports“;“模块未定义”;,javascript,requirejs,reactjs,commonjs,Javascript,Requirejs,Reactjs,Commonjs,因此,我正在使用RequireJS和React,尝试加载第三方组件,该组件已安装: npm install react-autocomplete 结构如下: 现在,我有一个main.js文件,在加载requireJS时启动,如下所示: require.config({ paths: { "react" : "react/react", "jsx-transformer" : "react/JSXTransformer", "react-autocomplet
npm install react-autocomplete
结构如下:
现在,我有一个main.js文件,在加载requireJS时启动,如下所示:
require.config({
paths: {
"react" : "react/react",
"jsx-transformer" : "react/JSXTransformer",
"react-autocomplete" : "node_modules/react-autocomplete/lib/main"
}
});
require(["react"], function(react) {
console.log("React loaded OK.");
});
require(["jsx-transformer"], function(jsx) {
console.log("JSX transformer loaded OK.");
});
require(['react-autocomplete'], function (Autocomplete) {
console.log("React autocomplete component loaded OK.");
var Combobox = Autocomplete.Combobox;
var ComboboxOption = Autocomplete.Option;
console.log("Autocomplete initiated OK");
});
module.exports = {
Combobox: require('./combobox'),
Option: require('./option')
};
define(function (require, exports, module) {
module.exports = {
Combobox: require('./combobox'),
Option: require('./option')
};
});
现在,它都加载OK,但是第三个require语句为第三方组件中的main.js文件抛出了一个“module is not defined”,如下所示:
require.config({
paths: {
"react" : "react/react",
"jsx-transformer" : "react/JSXTransformer",
"react-autocomplete" : "node_modules/react-autocomplete/lib/main"
}
});
require(["react"], function(react) {
console.log("React loaded OK.");
});
require(["jsx-transformer"], function(jsx) {
console.log("JSX transformer loaded OK.");
});
require(['react-autocomplete'], function (Autocomplete) {
console.log("React autocomplete component loaded OK.");
var Combobox = Autocomplete.Combobox;
var ComboboxOption = Autocomplete.Option;
console.log("Autocomplete initiated OK");
});
module.exports = {
Combobox: require('./combobox'),
Option: require('./option')
};
define(function (require, exports, module) {
module.exports = {
Combobox: require('./combobox'),
Option: require('./option')
};
});
我一直在读关于这与我试图要求一个CommonJS风格的模块有关,但我自己不知道如何修复它,因为我是新手
有没有人能举一个明确的例子来说明我如何解决这个问题?问题是,requireJS不支持CommonJS模块,只支持AMD。因此,如果第三方库不支持AMD,那么您必须克服一些困难才能使其正常工作
如果您有选择,我建议您使用或进行模块加载,因为大多数react社区都选择了这些工具,而且几乎所有第三方react组件都作为CommonJS模块发布在npm上。RequireJS无法按原样加载CommonJS模块。但是,您可以对它们进行最小的修改以加载它们。您必须将它们包装在
define
调用中,如下所示:
require.config({
paths: {
"react" : "react/react",
"jsx-transformer" : "react/JSXTransformer",
"react-autocomplete" : "node_modules/react-autocomplete/lib/main"
}
});
require(["react"], function(react) {
console.log("React loaded OK.");
});
require(["jsx-transformer"], function(jsx) {
console.log("JSX transformer loaded OK.");
});
require(['react-autocomplete'], function (Autocomplete) {
console.log("React autocomplete component loaded OK.");
var Combobox = Autocomplete.Combobox;
var ComboboxOption = Autocomplete.Option;
console.log("Autocomplete initiated OK");
});
module.exports = {
Combobox: require('./combobox'),
Option: require('./option')
};
define(function (require, exports, module) {
module.exports = {
Combobox: require('./combobox'),
Option: require('./option')
};
});
如果您有一堆需要转换的模块,或者如果您使用的是以CommonJS模式编写的第三方库,并且希望将其作为构建过程的一部分进行转换,那么您可以使用来执行转换。对,我猜问题是我接下来会修改第三方组件。但是谢谢!