RequireJS数据主模块回调未被调用

时间:2014-01-13 12:47:40

标签: javascript requirejs amd

我的应用:

define(function bringTheAction() { console.log('Loaded!'); });

使用data-main优化和加载:

<script data-main="src/app" src="lib/require.js"></script>

并且RequireJS会加载文件:

<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="app" src="src/app.js"></script>

但是,bringTheAction回调永远不会被调用,我的应用程序只是空闲。

我可以通过在控制台中执行require(['src/app']);或在未构建的代码中将define更改为require来解决问题,但是:

  • 从我的理解,它应该按原样运作;和
  • 我需要使用define,因此可以使用Squire模拟模块。

在开发过程中,未构建的代码加载方式不同:

<script src="lib/require.js"></script>
<script src="src/require.config.js"></script>
<script>require({ /* config applicable to dev */ }, ['src/app'], function () {});</script>

它像梦一样。

1 个答案:

答案 0 :(得分:0)

好吧,经过多次混淆,我有点想到这一点。

我注意到属性data-requiremodule="app"(在RequireJS注入的脚本标记上)并假设我需要的是data-requiremodule="src/app",这样一旦文件加载,RequireJS知道require的内容。< / p>

我不确定为什么在此属性上省略src/,因为我的配置被调整为从src/上方的目录操作(因此我通过前缀src/来引用模块, lib/等)。但是,作为修复,我在构建配置中添加了一个别名,以满足RequireJS:

paths: { 'app': 'src/app'; }

现在该属性实际上指向要加载的模块。