【问题标题】:RequireJS Text Plugin Optimization throws an errorRequireJS 文本插件优化抛出错误
【发布时间】:2013-01-25 00:36:11
【问题描述】:

我的项目使用了requirejs的文本插件,虽然插件可以正常工作,但优化器却不行。这是对我的应用程序文件的测试:

define([
    'jquery', 
    'underscore',
    //'ui/js/form/LoginForm'
    'text!core/ui/text/form/LoginForm.txt'
], function($, _, template) {
    var initialize = function() {

    }

    return {
        initialize : initialize
    };
});

这是配置:

require.config({
    paths : {
        jquery      : 'lib/jquery/jquery',
        underscore  : 'lib/underscore/underscore',
        text        : 'lib/require/text'
    },
    shim: {
        underscore: {
            exports: '_'
        }
    }
});

require([
    'app', 
], function(App) {
    App.initialize();
});

这是构建配置:

({
    baseUrl: '../scripts',
    mainConfigFile: '../scripts/main.js',
    name: '../scripts/main',
    out: '../scripts/concatenated-modules.js',
    optimize: 'none',
    optimizeAllPluginResources: true
})

我毫无疑问地知道项目中的路径是正确的,因为应用程序本身可以工作。但是在构建时我得到了这个:

C:\wamp\www\build>java -classpath js.jar org.mozilla.javascript.too
ls.shell.Main r.js -o build.js

Tracing dependencies for: ../scripts/main
InternalError: The choice of Java constructor append matching JavaScript argumen
t types (null) is ambiguous; candidate constructors are:
    class java.lang.AbstractStringBuilder append(java.lang.StringBuffer)
    class java.lang.AbstractStringBuilder append(java.lang.String)
    class java.lang.AbstractStringBuilder append(java.lang.Object)
    class java.lang.AbstractStringBuilder append(java.lang.CharSequence)
    class java.lang.AbstractStringBuilder append(char[]) (r.js#21883(eval)#307)
In module tree:
    ../scripts/main
      app
        text

InternalError: The choice of Java constructor append matching JavaScript argumen
t types (null) is ambiguous; candidate constructors are:
    class java.lang.AbstractStringBuilder append(java.lang.StringBuffer)
    class java.lang.AbstractStringBuilder append(java.lang.String)
    class java.lang.AbstractStringBuilder append(java.lang.Object)
    class java.lang.AbstractStringBuilder append(java.lang.CharSequence)
    class java.lang.AbstractStringBuilder append(char[]) (r.js#21883(eval)#307)
In module tree:
    ../scripts/main
      app
        text

我的猜测是优化器无法意识到 'text!core/ui/text/form/LoginForm.txt' 文本依赖项使用了插件。

我想要的是内联资源,我一直在按照教程进行操作,并且我拥有所有库的所有最新版本。

【问题讨论】:

  • 只是为了一笑而过,尝试不同的构建工具,如 prunejs.com

标签: javascript module requirejs optimization r.js


【解决方案1】:

Rhino 工具似乎无法理解文本!使用 r.js 编译时的插件

我切换到 Node 并且一切正常。

对于可能遇到相同问题的其他人,只需访问 nodejs 网站并下载 windows 安装程序(我使用的是 windows)。安装后重启你的电脑,你可以使用node r.js -o app.build.js,如requirejs网站上的解释。

【讨论】:

    【解决方案2】:

    Rihno 的文本插件有问题。 您的文件 'core/ui/text/form/LoginForm.txt' 不应为空。 在该文本文件中添加任何字符串,它将运行。 在 Rhino 中,使用文本插件时,空白文本被视为“null”

    【讨论】:

      猜你喜欢
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      相关资源
      最近更新 更多