在index.html
文件的底部,我有以下内容。
<script src="/resources/js/require.js"></script>
<script>
$(document).ready(function() {
require(['main'], function (main) {
main.start();
});
});
</script>
这确实加载了main.js文件并在调用main.start()
之前等待它完成。现在问题是返回的main
变量不是模块,而是undefined
。
这是main.js:
define('/src/main', ['exports', '../screens/loginScreen'], function (exports, _loginScreen) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.start = undefined;
function main() {};
var start = exports.start = function start() {
new _loginScreen.default().open();
};
});
//# sourceMappingURL=main.js.map
我尝试在main.js文件末尾有一个实际的return语句。无论我返回什么,仍需要undefined
。
答案 0 :(得分:0)
我尝试了你的代码并得到了同样的错误。我认为问题与您的main.js
位置有关。如果它位于项目根目录的src
文件夹中,则需要将 relative 从项目的根目录传递到require
,如下所示:
require(['src/main'], function (main) {
main.start();
});
此外,在您的main.js
中,也可以使用相对路径:
define('src/main', ['exports', '../screens/loginScreen'], function...
答案 1 :(得分:0)
您的实际模块存在的问题是它没有返回任何内容,因此只返回undefined
。
您需要将模块包装在一个函数中并返回此函数,这是您需要的:
define('/src/main', ['exports', '../screens/loginScreen'], function(exports, _loginScreen) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var Main = function Main() {
}
Main.start = exports.start = function start() {
new _loginScreen.default().open();
};
return new Main();
});
或者,如果您希望您的模块不是所有页面中共享的同一实例,并始终使用new
关键字进行实例化,则只需返回Main
函数:
return Main;
而不是在return new Main();
中返回它的实例。