2016-09-29 45 views
1

所以我想读取Require JS API -documentation找出如何做到这一点,但我一直无法加载一个库,所以它不会被定义为undefined 。我通过NPM-WebJars使用了这个功能,不过我想你应该怎么定义它并不重要。RequireJS配置与模块,没有AMD支持

基本上,我试图在我的项目中使用the react-bootstrap-switch -library。这是JavaScript-file source in Pastebin,因为它可能在主分支中发生变化。 react-bootstrap-switch使用exports.default = Switch定义库。我有几个使用RequireJS定义的模块,这些模块有AMD支持并且正在工作。

这里是我如何使用RequireJS

requirejs.config("paths":{"react-bootstrap-switch":["@routes.WebJarAssets.at("react-bootstrap-switch/15.0.0/dist/js/index")"]}}); // the file location 

使用库

define(['react', 'react-bootstrap-switch'], function(React, Switch){ 
    console.log(Switch); // <- undefined 
} 

所以只有标准requirejs.config -import这是行不通的,因为缺乏支持AMD。所以我想我应该使用垫片,但我该怎么做?我一直在阅读它,但我无法正确导入使用它的库。这可能应该很容易,但它似乎并没有工作。例如

requirejs.config({ 
      "paths":{"react-bootstrap-switch":["@routes.WebJarAssets.at("react-bootstrap-switch/15.0.0/dist/js/index")"]}, 
      "shim": { 
        "react-bootstrap-switch": { 
          exports: 'Switch' 
         }}}); 

使其未定义。我一直试图用init函数来介入,但我无法在窗口内找到正确的名称空间。还尝试在路径之前切换匀场顺序,尝试'默认'而不是'切换',以及其他一些技巧,但它似乎并没有正确导入它,因为它被卡住到未定义。

我可以尝试的最后一件事是在本地获取代码并更改为其他内容而不是exports.default,或者只是编写自己的函数,但我希望将其用于将来参考。

回答

1

很明显,您要加载的文件是经过转换并且针对CommonJS环境的文件。这些文件不能像RequireJS那样加载。

您将至少将其代码在define(function (require, exports, module) {开头处封装,末尾为});。一旦你这样做,它可能工作。您可以使用r.js来执行包装或任何其他工具。