1

由于 require.js 构建的大多数问题都与文件结构和相对路径引用有关,因此我在这里创建了一个存储库:https ://github.com/ttback/requirejs-example以便于排除故障。

错误是当我运行 grunt 时,我会得到no such file or directory requirejs-example/src/js/bundle/js/bundle/utils.js

这是由于错误的baseUrl。我希望它是,src/但我无法设置它,因为它会src/js/bundle/main.js根据我的 Gruntfile 查找依赖项。所以基数在src/js/bundle。当前的 main.js 与 index.html 一起使用,如果我将 utils.js 的相对路径从 main.js 更改.js/bundle/utils.js./utils.js内部,应用程序将中断。

有什么办法可以让 grunt-requirejs 与我所拥有的一起工作吗?

4

1 回答 1

2

首先,添加一个体面的代码示例的要点。

这个问题其实很容易解决。

简单地改变:

var utilsObject = require('./js/bundle/utils.js');

到:

var utilsObject = require('./utils');

现在构建工具和应用程序将工作。

通过添加.js后缀,您绕过了baseUrlRequireJS 应用于模块路径的规则。从文档:

默认情况下,RequireJS 还假定所有依赖项都是脚本,因此它不希望在模块 ID 上看到尾随的“.js”后缀。

有时您确实想直接引用脚本,但不符合查找它的“baseUrl + 路径”规则。如果模块 ID 具有以下特征之一,则该 ID 将不会通过“baseUrl + 路径”配置传递,而只会被视为相对于文档的常规 URL:

  • 以“.js”结尾。
  • 以“/”开头。
  • 包含 URL 协议,如“http:”或“https:”。

http://requirejs.org/docs/api.html#jsfiles

于 2013-11-22T11:38:37.370 回答