使用相对路径加载模块失败

fail to load module using relative path

本文关键字:模块 失败 加载 路径 相对      更新时间:2023-09-26

在我的项目中,我有一个带有多个文件的js文件夹。js文件夹下的一个文件app.js依赖于该文件夹下的其他文件。

我在这里读到(define()中的相对模块名),如果你使用"local require",你可以使用相对路径加载模块。比如我输入:

js
|- app.js
|- util.js
|- logger.js

然后我可以做:

//in app.js
define(function(require){
 var util = require("./util");
 var logger = require("./logger");    
 ...
});

但出于某种原因,这对我不起作用。我所看到的是模块直到&相对于我在require配置中定义的baseUrl被请求的。

这不是我期望发生的事情,我真的不明白为什么会这样,特别是因为我在我的项目中有其他模块可以正确地使用相对路径。

任何帮助都是感激的。


是否有可能,这发生在这里,因为我正在加载app.js从另一个模块使用全局要求?

在init.js中我有:

//in init.js
require(["config"], function (config) {
    require(["app"], function (app) {
    });
});

这会导致问题吗?

1。尽量避免CommonJS样式调用require Go的AMD样式。

CommonJS风格:

var result = require(resource)

AMD风格:

require([resource], function(result){})

RequireJS does NOT同步加载CJS风格的资源。它通过检查函数体并向定义中注入需求来模拟它。您没有看到它,但是您在那里写的内容实际上运行为:

// app.js
define(['require', 'exports', 'module', './util', './logger'], function(require){
    var util = require("./util"); // <- "sync" call is ok because it's pre-loaded
    var logger = require("./logger"); // <- "sync" call is ok because it's pre-
});

你进入了巫术的领地。试着明确你需要的东西:

// app.js
define(['./util', './logger'], function(util, logger){
    ...
});

但如果你真的想玩"本地"要求,用AMD的方式,因为它肯定会踢所有模块ID解析规则:

// app.js
define(['require'], function(require){
    require(
        ['./util', './logger']
        , function(util, logger){
            ...
        }
    )
});

另外,这部分对我来说也没有意义:

require(["config"], function (config) {
    require(["app"], function (app) {
    });
});

我希望"app"等于"js/app" baseUrl - 'js'的值是多少?

app.js中的路径定义看起来是正确的,但是RequireJS解析"app"的方式可能是一个问题。