2013-11-21 18 views
1

由于与require.js大多数问题建立具有与文件结构和相对路径的参考做,我创建了一个回购在这里:https://github.com/ttback/requirejs-example更容易解决问题。“没有这样的文件”的错误时使用咕噜-requirejs编译

的错误是,当我运行的呼噜声,我会得到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,则应用程序将中断。

有没有什么办法可以让与我有什么繁重的-requirejs工作?

回答

2

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

这个问题实际上很容易解决。

简单的改变:

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

到:

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

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

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

RequireJS也默认情况下,所有的依赖是脚本假设, 因此它不希望看到的模块ID尾“的.js”后缀。

有时您可能会直接引用脚本,并且 不符合“baseUrl +路径”规则以查找它。如果一个模块 ID具有以下特征中的一个,该ID将不会被传递 通过“的baseUrl +路径”构造,并且只是被像 常规URL,它是相对于文档处理:

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

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

+0

感谢,但是这是我想的第一件事。如果您改变它并按原样运行应用程序,会发生什么情况,它将无法找到utils。 (构建工具将工作并产生build.js)如果通过执行\t \t我丝build.js <脚本数据主要=“JS /束/ build.js” SRC =“JS /框架/ require.js”>,该应用程序不会做任何事情....我是否需要一些额外的代码来调用模块? – ttback

+0

我改变了这一行,并在浏览器中运行应用程序。所有文件加载正确(我看到了警报)和构建工具的工作。你说过你用.js扩展名试过了,你没有试过吗? –

+0

我明白了...嗯,将再次尝试,后缀 – ttback

相关问题