AMD baseurl和路径被忽略

时间:2017-08-08 07:44:36

标签: javascript requirejs amd

这不可能是重复的。

简单地说,无论我做什么,baseUrl和路径都被完全忽略,我的配置文件就是这个,看起来就是这样:

require.config({
  baseUrl: CONTEXTPATH + "/javax.faces.resource/scripts/new",
  paths: {
    "scripts": CONTEXTPATH + "/javax.faces.resource/scripts/new"
  }
})

require([
  "scripts/containers/index.frontpage.js.jsf?",     //it goes to mysite.com/scripts/containers/index.frontpage.js.jsf?
  "scripts/reducers/index.frontpage.js.jsf?"        //it goes to mysite.com/scripts/reducers/index.frontpage.js.jsf?
], function(C, R){
  //some logic....
});

如果我在文件路径中执行/scripts ./scriptsscripts并且它将始终转到根目录并不重要,我知道扩展很奇怪但这是遗产系统,我正在运行升级,AMD甚至无法获取javascript文件,只有绝对路径有效,但有些模块无法访问CONTEXTPATH,打破它。

1 个答案:

答案 0 :(得分:0)

问题是问号。我刚试过我的本地配置(使用 baseUrl 可以正常工作)。只要我将require(['module'])更改为require(['module?']),requireJS就会忽略baseUrl。

然而,这很奇怪,因为根据documentation,只要(1)路径以斜杠(require(['/foo']))开头,就会忽略baseUrl,(2)有一个协议( require(['http://example.com/foo']))或(3)以 .js require(['foo.js']))结尾。问号 应该不是问题(除非在命名模块时禁止使用)。

所以,只需删除qustion标记即可。此外,由于我不知道 CONTEXTPATH 是什么样的,你也可以尝试使用绝对URL(http://example.com/...)(这是我的require配置的方式,我们从来没有遇到过问题)

此外,paths规则定义例外(“使用baseUrl,除非在路径中指定了其他内容”)。