9

我在requirejs中的相对路径有问题。

首先,我有以下结构。我正在使用虚拟主机(os.com)运行它,路径是 os.com/test

在此处输入图像描述

索引.html

<script data-main="config" src="require.js"></script>

配置.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'
  }


});

如何更改我的配置以使路径和相对路径一起工作?

4

2 回答 2

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 将正确加载相对路径的模块。

这是一个有用的帖子:RequireJS 模块/包的相对路径

于 2012-11-21T22:19:53.053 回答
4

这里的解决方案是使用地图配置,而不是路径配置。路径配置只能用于文件夹,而不是模块本身。地图配置适用于各个模块。

所以试试:

require.config({
  map: {
    '*': {
      'ui': 'ui/ui'
    }
  }
});
于 2013-01-27T12:00:48.097 回答