1

我在运行 requirejs 作为编译我的 js 文件的繁重任务时遇到问题。当我使用相同的配置文件手动运行它(r.js.cmd -o configfile.js)时,一切似乎都正常。

似乎 grunt 任务正在输入路径定义并且无法找到我的 lib 文件。

>> Error: ENOENT, no such file or directory
>> '/path/to/project/js/lib.js'
>> In module tree:
>>     module
>>       libs/another-lib

路径应该是 /path/to/project/js/lib/lib.js。我的主 js 文件(data-main-attribute 中的那个)有一个带有正确路径映射的 requirejs.config 调用('lib':'lib/lib.js')。之后,我将它们用作启动应用程序的 require 调用中的参数。

我的requirejs任务配置:

requirejs: {
    compile: {
        options: {
            name: "bootstrap",
            baseUrl: "submodule/js",
            mainConfigFile: "submodule/build.js",
            out: "submodule/js/bootstrap-built.js"
        }
    }
}

grunt requrejscall 和should之间的唯一区别r.js.cmd -o build.js是 grunt 任务配置。毕竟他们使用的是相同的配置文件。我做错了什么或者 grunt-contrib-requirejs 中的路径存在某种问题?

4

1 回答 1

-1

我的问题是 requirejs 任务选项和 mainConfigFile 之间的冲突。我想在主项目的子模块中使用相同的配置文件,但配置了不同的基本 url (submodule/js/ -> js/)。

我还没有找到一种方法来覆盖配置文件中的选项,所以我不得不将它们复制到任务配置中。它并不漂亮,但至少现在可以使用。

于 2014-01-03T08:24:18.250 回答