由于require.js构建的大多数问题都与文件结构和相对路径引用有关,因此我在此处创建了一个repo:https://github.com/ttback/requirejs-example以便于进行故障排除。
错误是当我运行grunt时,我会得到no such file or directory requirejs-example/src/js/bundle/js/bundle/utils.js
这是由于错误的baseUrl造成的。我希望它是src/
但我无法设置它,因为它根据我的Gruntfile找到src/js/bundle/main.js
的依赖项。所以基数是src/js/bundle
。当前的main.js与index.html一起使用,如果我在main.js中将utils.js的相对路径从.js/bundle/utils.js
更改为./utils.js
,应用程序将会中断。
有什么方法可以让grunt-requirejs与我拥有的一起工作吗?
答案 0 :(得分:2)
首先,添加一个不错的代码示例。
问题很容易解决。
简单地改变:
var utilsObject = require('./js/bundle/utils.js');
为:
var utilsObject = require('./utils');
现在构建工具和应用程序都能正常工作。
通过添加.js
后缀,您绕过了RequireJS应用于模块路径的baseUrl
规则。来自文档:
默认情况下,RequireJS还假定所有依赖项都是脚本, 所以它不希望在模块ID上看到后缀“.js”。
有时您可能希望直接引用脚本 不符合“baseUrl + paths”规则来查找它。如果一个模块 ID具有以下特征之一,ID不会被传递 通过“baseUrl + paths”配置,就像对待一样 与文档相关的常规URL:
- 以“.js”结尾。
- 以“/”开头。
- 包含URL协议,例如“http:”或“https:”。