【问题标题】:I am following the instructions for circular references on the RequireJS site, but it doesn't work我按照 RequireJS 网站上的循环引用说明进行操作,但它不起作用
【发布时间】:2014-12-11 23:43:13
【问题描述】:

我有一个简单的案例,我相信它遵循 RequestJS 文档中的说明:http://requirejs.org/docs/api.html#circular 但是,它似乎不起作用。我已将我的文件放在下面,并在 Dropbox 中放置了一个 zip 文件:https://www.dropbox.com/s/5h7hlj281cddh5t/program_version_2.zip?dl=0 有人可以告诉我发生了什么事吗?

index.html:
<!doctype html>
<html>
<head>
    <script data-main="js/app" src="js/require.js" type="text/javascript"></script>
</head>
<body>
Loaded.
</body>
</html>

app.js:
requirejs.config({
    paths: {
        'module1': 'module1',
        'module2': 'module2'
    }
});

requirejs(['main'], function(main) {
    main.start();
});


main.js:
define(['module1'], function (module1) {

    var start = function() {

        console.log('In main.js.  Before initializeValues.');

        module1.doOperation();

    }

    return {
        start: start
    };
});


module1.js:
define(['require', 'module2'],
function (require, module2) {

    var doOperation = function() {
        console.log('Start of doOperation function');

        require('module2').someFunc();
    };

    var anotherFunc = function() {
        console.log('In anotherFunc.');
    };

    return {
        doOperation: doOperation,
        anotherFunc: anotherFunc
    };

});


module2.js:
require(['require', 'module1'], function(require, module1) {

    var someFunc = function() {
        console.log('In someFunc.');
        require('module1').anotherFunc();
    };

    return {
        someFunc: someFunc
    };
});


require.js:
/** vim: et:ts=4:sw=4:sts=4
 * @license RequireJS 2.0.4 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.
 * Available via the MIT or new BSD license.
 * see: http://github.com/jrburke/requirejs for details
 */
/*jslint regexp: true, nomen: true */
/*global window, navigator, document, importScripts, jQuery, setTimeout, opera */

var requirejs, require, define;
(function (global) {
    'use strict';

    var version = '2.0.4',
        commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
        cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
        jsSuffixRegExp = /\.js$/,
            :          : 

我在控制台中收到消息: Uncaught TypeError: Cannot read property 'someFunc' of undefined 。 . . .模块1.js:7

当我觉得我不理解 RequireJS 在做什么时,我很难继续前进。有人可以阐明吗?

【问题讨论】:

    标签: requirejs circular-dependency


    【解决方案1】:

    module2.js 你有:

    require(['require', 'module1'], function(require, module1) {
    

    你想使用:

    define(['require', 'module1'], function(require, module1) {
    

    你需要使用define来定义模块。

    【讨论】:

    • 是的,这解决了问题。谢谢!现在我将回到最初的问题,我简化为这个,看看我是否可以让它工作。我试图投票给你的答案,但它说我的名声太差了。 !
    猜你喜欢
    • 1970-01-01
    • 2020-03-25
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    相关资源
    最近更新 更多