Here is a sample application demonstrating the issue(抱歉没有小提琴,因为它是关于基于节点的r.js)
我无法让requirejs优化器与相对路径一起正常工作。
我的网络应用程序包含以下目录
require(['plugins'])
(标准多页设置)../app-plugins/a.js
在非优化版本中一切正常(在app上运行webserver,打开控制台并导航到索引页面)。
然而,由于plugins.js中的../
,优化会给我一个错误。要将此CD看到优化目录并运行node .\node_modules\requirejs\bin\r.js -o .\build.json
。错误将是
W:\temp\requireop\optimization [master]> .\Build-RequireJs.ps1
Tracing dependencies for: main
Tracing dependencies for: plugins
Error: ENOENT, no such file or directory 'W:\temp\requireop\build\app-plugins\a.js'
In module tree:
plugins
Error: Error: ENOENT, no such file or directory 'W:\temp\requireop\build\app-plugins\a.js'
In module tree:
plugins
at Object.fs.openSync (fs.js:427:18)
答案 0 :(得分:1)
我做了以下更改并且工作正常:
main.js
:
baseUrl: 'scripts'
在一般情况下,路径区分大小写;最好不要包括前导斜杠。
optimization/build.json
变为:
{
appDir: '../app',
baseUrl: 'scripts',
dir: '../build',
modules: [ // the same
]
}
您可以找到详细信息here,但有一些解释:
appDir
让r.js知道来源的位置。我相信这也使得r.js知道如何处理相对路径 - 虽然不太确定。baseUrl
变得相对于appDir
。dir
是输出的位置,它还会复制在appDir
中找到的文件。此过程会覆盖/build/
中的文件。