在requirejs中使用内联require()可以工作,但在优化后的almond构建中无法工作。

11

正如标题所述,我的内联 require 调用在未经优化的 requirejs 运行中工作,但在使用 grunt 和 almondjs 构建时不起作用。

Uncaught Error: undefined missing views/some/view
任何文件的顶部可能是:

define(
['jquery', 'app'],
function($, App) {

后来基于业务逻辑,我希望能够要求另一个文件。

require(['views/some/view'], function(SomeView){
     console.log(SomeView);
});

我也尝试了备选的语法:

var SomeView= require('views/some/view');

即使使用未构建的requirejs版本,这一切都能正常运作。但是当我使用grunt和almond进行构建时,它又失败了。

    requirejs: {
        compile: {
            options: {
                name: "../components/almond/almond", 
                baseUrl: "src",
                mainConfigFile: "./require.config.js",
                include: ['main'], 
                insertRequire: ['main'], // Add a require step in at the end for the main module.
                wrap: true, // Wrap everything up in a closure
                generateSourceMaps: true, // Experimental
                preserveLicenseComments: false, // Needs turned off for generateSourceMaps
                optimize: "uglify2", // Supports generateSourceMaps
                out: "assets/javascripts/build.js"
            }
        }
    },

如果我在定义调用的顶部放置它,我可以在杏仁中很好地使它工作,但是在AMD中保持简洁不是更可取吗?

1个回答

10
根据Almond文档,它与非动态加载和将所有内容打包到一个文件中的配合效果最佳。
您应该能够在编译选项中将"findNestedDependencies"设置为true,以确保内联的require调用被包含在构建过程中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接