RequireJS shim 在简单示例中被忽略

RequireJS shim being ignored in simple example

据我了解,您可以使用带有 Requirejs 的垫片来动态加载未在其自己的文件中定义为模块的脚本。那么为什么我不能让这样一个简单的脚本工作呢?

这是我的非工作示例:

/libs/test.js:

var a = 'Hello from TestJS';

main.js

require.config({
    shim: {
        './libs/test': { exports: 'test'}
    }
}

然后在控制台中尝试:

require(['./libs/test'], function(t) { console.log(t); })

产生 undefined

那么我如何获得 a

我可以从网络选项卡中看到 test.js 是从服务器加载的。我有一种感觉,我的 shim 配置被忽略了,requirejs 只是在没有 shim 的情况下加载它。因此,如果我只做 console.log(window.a),我会看到 'Hello from TestJS'。

使用您为 test.js 显示的代码,您必须指定导出的符号是 a,而不是 test,因为后者从未在 test.js 中定义:

shim: {
    './libs/test': { exports: 'a'}
}