5

如果我在没有“命名空间:'foo'”标志的情况下运行优化器,一切都会按预期工作。当我将“命名空间:'foo'”添加到 app.build.js 中时,我收到此错误:

GET:file:// (项目路径) /require-jquery/jquery-require-sample/webapp/jquery.js
main-built.js:main-built.js:1839

未捕获的错误:脚本错误http://requirejs.org/docs/errors.html#scripterror
main-built.js:163

我四处寻找解决方案,但几乎没有关于使用 RequireJS 优化器导出单个文件、带有 jquery 和命名空间的信息。谢谢!

我已将 RequireJS + jQuery 示例项目(带有修改的 app.build.js 和 app.html)放在 github 上。

({
    baseUrl: ".",
    out: 'main-built.js',
    //Comment out the optimize line if you want
    //the code minified by UglifyJS
    optimize: "none",

    paths: {
        "jquery": "require-jquery"
    },

    name: 'main',
    namespace: 'foo'
})
4

2 回答 2

0

尝试删除 name 参数(除非你真的需要它)。

于 2013-01-15T23:11:59.240 回答
0

我知道我在这里聚会迟到了,但是只需使用谷歌搜索即可轻松找到此线程。

jquery 里面有 AMD 检测。您正在为 requirejs 使用命名空间,这会导致所有define函数调用发生一些变化。

这会导致 jquery 发生变化,只会破坏它(或者只是实际的定义代码,但您的命名空间调用无论如何都不起作用)

我目前正在解决这个问题。我看到以下选项:

  1. 全局使用 jQuery,就像 2005 年一样
  2. hack 需要命名空间来理解 AMD 检测
  3. 为 jquery 拼凑一个 shim 以使其工作

我将尝试第三种选择,如果有什么要报告的,我会报告

[编辑]

命名空间也可以在 shim 内部工作 :( 这没有任何意义,但它确实如此。到目前为止,我不知道如何使它与 shim 一起工作,并且不对 jquery 本身进行任何更改。如果你想摆弄jquery, 在末尾附近有一行测试是否define是用于定义 AMD 模块的函数。打破这一行(例如,通过添加false &&),你就有了一个工作垫片。

于 2013-09-09T11:14:55.120 回答