我在requirejs中遇到相对路径问题。
首先,我有以下结构。我正在使用虚拟主机(os.com)运行它,路径是os.com/test
的index.html
<script data-main="config" src="require.js"></script>
config.js
require.config({
baseUrl: "./apps",
deps: ['ui'],
paths: {
ui: 'ui/ui',
system: 'system/system',
core: 'core/core'
}
});
ui.js
define(['./class/menuBuilder',"./class/window"], function(menuBuilder, windowBuilder){
return {
menuBuilder: menuBuilder,
windowBuilder: windowBuilder
}
});
当我运行它时,我会收到以下错误。
GET http://os.com/test/apps/class/menuBuilder.js 404 (Not Found)
GET http://os.com/test/apps/class/window.js 404 (Not Found)
如果我从'paths'属性中取出'ui'属性然后将deps更改为['ui / ui'],它会起作用,但我想使用路径。
更改了config.js
require.config({
baseUrl: "./apps",
deps: ['ui/ui'],
paths: {
system: 'system/system',
core: 'core/core'
}
});
如何更改配置以使路径和相对路径一起工作?
答案 0 :(得分:12)
我有类似的问题。我没有deps:'ui'参与我的配置,只是路径设置,但仍然相对模块引用('./class/menuBuilder')无法从加载路径的模块(“ui:'ui)起作用/ ui'“)并将使用baseUrl。为了解决这个问题,我将'ui'定义为一个包:
require.config({
baseUrl: "./apps",
deps: ['ui'],
paths: {
system: 'system/system',
core: 'core/core'
},
packages : [
{
name: 'ui',
location : 'ui',
main : 'ui'
},
]
});
在这种情况下,require将正确加载相对模块的模块。
答案 1 :(得分:4)
此处的解决方案是使用地图配置,而不是路径配置。路径配置应仅用于文件夹,而不是模块本身。地图配置适用于各个模块。
所以试试:
require.config({
map: {
'*': {
'ui': 'ui/ui'
}
}
});