相对路径不适用于路径

Posted

技术标签:

【中文标题】相对路径不适用于路径【英文标题】: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'
  


);

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

【问题讨论】:

【参考方案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'
    
  
);

【讨论】:

以上是关于相对路径不适用于路径的主要内容,如果未能解决你的问题,请参考以下文章

字体的相对路径不适用于 sass-loader

SQLite的相对路径不适用于WIX工具集

php require() 不适用于相对或完整

PHP:要求路径不适用于 cron 作业?

sonar-maven-plugin:如何在包含模式中使用项目相对路径?

为啥没有用于@angular/core 模块导入的相对路径