【问题标题】:relative path doesn't work with paths相对路径不适用于路径
【发布时间】:2012-08-29 13:34:43
【问题描述】:

我在 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'
  }


});

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

【问题讨论】:

    标签: path requirejs relative-path


    【解决方案1】:

    我有类似的问题。我的配置中没有 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 会正确加载相对路径的模块。

    这是一个有用的帖子:Relative paths with RequireJS modules/packages

    【讨论】:

      【解决方案2】:

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

      那就试试吧:

      require.config({
        map: {
          '*': {
            'ui': 'ui/ui'
          }
        }
      });
      

      【讨论】:

        猜你喜欢
        • 2011-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-28
        • 2015-05-14
        • 2017-06-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多