У меня есть приложение, в котором есть объект приложения, который выполняет процедуру запуска и хранит полезные вещи, такие как app.state
и app.user
. Однако я пытаюсь получить доступ к этому экземпляру приложения без передачи this
из экземпляра приложения по всей моей большой кодовой базе.
Как ни странно, я работаю над другими проектами, которые включают приложение так же, как и в something.js
, и оно работает, но я не понимаю, почему.
index.html
<!DOCTYPE html>
<html>
<head>
<title>Cannot require app in another file</title>
</head>
<body>
<script data-main="config" src="require.js"></script>
</body>
</html>
config.js
requirejs.config({
deps: ['app']
});
app.js
define([
'something'
], function(Something) {
'use strict';
var App = function() {
this.name = 'My app';
};
return new App();
});
что-то.js
define([
'require',
'app'
], function (require, app) {
'use strict';
var SomeModule = function() {
app = require('app'); // EXCEPTION
console.log('App:', app);
};
return new SomeModule();
});
При загрузке этого исключения requirejs возникает из-за требования в SomeModule
:
Необработанная ошибка: имя модуля "приложение" еще не загружено для контекста: _
Демонстрация выше (ошибки см. в консоли): http://dominictobias.com/circulardep/