【问题标题】:RequireJS not working with commonjs require syntaxRequireJS 不使用 commonjs 需要语法
【发布时间】:2014-01-01 17:15:15
【问题描述】:

我正在尝试使用 commonjs var mod=require("mod"); 语法让 RequireJS 工作并收到此错误:

Uncaught Error: Module name "mod" has not been loaded yet for context: _. Use require([])

documentation 表示此错误状态:

如果错误消息包含 Use require([]),那么它是一个顶级 require 调用(不是 define() 调用中的 require 调用),它应该使用异步回调版本的 require 来加载代码

但这不适用于我的代码 - 要求行在对 define 的调用中。

这是我的精简测试代码:

test.html:

<!DOCTYPE html>
<html>
    <head>
        <title>Require JS test</title>
        <script data-main="main" src="require.js"></script>
    </head>
    <body>

    </body>
</html>

main.js:

define(function() {
    var mod=require("mod");
});

mod.js:

define(function() {
    return {
        prop: 123
    };
});

require.js 是 2.1.9 版 - http://requirejs.org/docs/release/2.1.9/comments/require.js

【问题讨论】:

    标签: javascript requirejs commonjs


    【解决方案1】:

    你为什么不这样使用它:

    主要的js:

    require(['mod'], function(mod) {
         console.log(mod.prop);
    });
    

    否则使用:

    main.js:

    define(function(require) {
        var mod = require("mod");
    });
    

    【讨论】:

    • 我对为什么我现在的做法不起作用很感兴趣。
    • 我认为您只是缺少定义函数中的 require arg
    • var mod = require("mod"); 无法工作,因为 require 是异步使用 define(["mod"], function(mod, require) {
    • @megawac : 你不应该首先要求 mod,你应该使用 define(["require","mod"], function(require,mod) {}); 代替,但上面的例子也可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2017-07-26
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多