当前位置: 首页 > 面试题库 >

module.exports“未定义模块”

翁硕
2023-03-14
问题内容

因此,我正在使用RequireJS和React,尝试加载已安装的第三方组件:

npm install react-autocomplete

结构在这里:https :
//github.com/rackt/react-
autocomplete/tree/master/lib

现在,我有一个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");
 });

现在,它们全部加载正常,但是第三条require语句为第三方组件中的main.js文件抛出“未定义模块”,如下所示:

module.exports = {
  Combobox: require('./combobox'),
  Option: require('./option')
};

我一直在阅读有关这与尝试使用CommonJS样式的模块有关的信息,但由于我是新手,所以我不知道该如何自行修复。

有没有人有一个清楚的例子说明我该如何解决?


问题答案:

RequireJS无法按原样加载CommonJS模块。但是,您可以对其进行最小的修改以加载它们。您必须将它们包装在这样的define呼叫中:

define(function (require, exports, module) {

  module.exports = {
    Combobox: require('./combobox'),
    Option: require('./option')
  };

});

如果您有一堆模块需要转换,或者您正在使用以CommonJS模式编写的第三方库,并且希望在构建过程r.js中进行转换,则可以使用该模块来执行转换。



 类似资料:
  • 问题内容: 这是我的代码: 我收到错误消息: 当我删除第一行时,我得到: 我到处搜索,人们到处都提到了Node.js的问题,但是我安装的Node是正确的,所以我不确定是什么问题。 问题答案: XMLHttpRequest是 Web浏览器中 的内置对象。 它不随Node一起分发;您必须单独安装它, 用npm安装 现在,您可以在代码中使用它。 var xhr = new XMLHttpRequest(

  • 我想为我的网站使用bootstrap(带node.js)。但我有以下错误: /var/www/node_modules/bootstrap/js/transition.js:59}(jQuery);^referenceerror:jQuery.(/var/www/node_modules/bootstrap/js/transition.js:59:3)在module.(/var/www/node_

  • Azure新手,创建了一个非常基本的ARM模板。有人能告诉我为什么我经常收到以下错误:“部署模板验证失败:'模板中未定义资源'Microsoft.Network/virtualNetworks/vNet'。请参阅https://aka.ms/arm-template有关用法的详细信息。(代码:InvalidTemplate)” 我试图删除“依赖”条目,但没有成功。 谢谢 { }

  • 问题内容: 注意:根据 ECMAScript5.1,第15.1.1.3节,window.undefined是只读的。 现代浏览器正确地实现了这一点。 例如:Safari 5.1,Firefox 7,Chrome 20等。 Undefined仍可在以下位置更改:Chrome 14,… 原来,问题的原因是 如果“对象”中没有属性“ x”,则返回false。 我通过在两个Facebook函数中用规则相等

  • 以下模板部署: https://gist.github.com/rnkhouse/aea0a8fd395da37b19466348b919d620 错误: “部署失败,状态代码为400,消息:部署模板验证失败:'模板中未定义资源'Microsoft.Network/virtualNetworks/mtes dev VNET'。请参阅。”https://aka.ms/arm-template有关用法

  • 问题内容: 我的团队没有经验丰富的JS开发人员,但是我们正在Node中编写一个库,并得到了一位真正的JS开发人员的建议:“我们应该使js更具模块化- 不会污染全局名称空间并使之更具可读性。给新来者”,并告诉我们执行以下操作: 而不是 这有什么意义(如果有)?后者不会进行IIFE范围内的任何本地声明,即使这样,它们对于模块文件也是本地的,而不是整个文件的全局程序。 尽管我已经阅读了许多关于IIFE的