0

此代码使用requirejs.shimConfig加载 jQuery.mCustomScrollbar 插件:

requirejs.config({
  baseUrl:'scripts',
  paths:{
    async:'lib/plugins/async',
    domReady:'lib/plugins/domReady',
    jquery:"http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min", 
    "jquery.mCustomScrollbar":"lib/plugins/jquery.mCustomScrollbar.concat.min"  
  },
  shim:{
        "jquery.mCustomScrollbar":{
           deps:['jquery'],
           exports:'jQuery.fn.mCustomScrollbar'
          }
       }
});

但是,Chrome 控制台显示requirejs尝试从以下位置加载文件baseUrl

 GET http://localhost:8180/GoogleMapErpProject/scripts/jQuery.mCustomScrollbar.js 404   (Not Found) require.js:34
 Uncaught Error: Script error for: jQuery.mCustomScrollbar
 http://requirejs.org/docs/errors.html#scripterror 

编辑:

我找到了一个不令人满意的解决方案:

  requirejs.config({
baseUrl:'scripts',
paths:{
    async:'lib/plugins/async',
    domReady:'lib/plugins/domReady',
    jquery:"http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min",
    plugins:"lib/plugins"   
},
shim:{
    "jquery":{
        exports:"jQuery"
    },
    "plugins/jquery.mCustomScrollbar.concat.min":{
        deps:['jquery'],
        exports:'jQuery.fn.mCustomScrollbar'
    }
   }
});

paths为什么当我在 中指定路径并在 中使用该路径时它不起作用shimConfig

4

1 回答 1

0

来自 require.js 文档,

baseUrl:用于所有模块查找的根路径。所以在上面的例子中,“my/module”的脚本标签会有一个 src="/another/path/my/module.js"。加载普通 .js 文件时不使用 baseUrl(由以斜杠开头、有协议或以 .js 结尾的依赖字符串表示),这些字符串按原样使用,因此 a.js 和 b.js 将从与包含上述代码段的 HTML 页面相同的目录加载。

因此路径应该/可以是这样的:

paths:{
    async:'lib/plugins/async',
    domReady:'lib/plugins/domReady',
    jquery:"http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min", 
    "jquery.mCustomScrollbar":"/lib/plugins/jquery.mCustomScrollbar.concat.min"  
  },

或者

paths:{
    ...
    "jquery.mCustomScrollbar":"./lib/plugins/jquery.mCustomScrollbar.concat.min"  
  },

或者

paths:{
    ... 
    "jquery.mCustomScrollbar":"lib/plugins/jquery.mCustomScrollbar.concat.min.js"  
  },

如果您不希望它从 baseUrl 加载。

于 2014-06-16T09:01:34.953 回答