Nodejs Вопрос о круговой зависимости

Я тестировал циклическую зависимость с помощью commonjs.

      //index.js
console.log('main starting');
const a = require('./a.js');
const b = require('./b.js');
console.log('in main, a.done = %j, b.done = %j', a.done, b.done);
      //a.js
console.log('a starting');
exports.done = false;
const b = require('./b.js');
console.log('in a, b.done = %j', b.done);
exports.done = true;
console.log('a done');
      //b.js
console.log('b starting');
exports.done = false;
const a = require('./a.js');
console.log('in b, a.done = %j', a.done);
exports.done = true;
console.log('b done');

Результат был

      // output
main starting
a starting
b starting
in b, a.done = false
b done
in a, b.done = true
a done
in main, a.done = true, b.done = true

Такindexимпортировать и импортировать

bпопробуйте импортировать, но это не закончено, поэтомуaвернуть незаконченный модуль.

Хорошо, я понял.


Но как насчет синтаксиса?

Я воспроизвел такой код.

      //index.js

console.log('main starting');
import a from './a.js';
import b from './b.js';
console.log('in main, a.done = %j, b.done = %j', a.done, b.done);
      //a.js
console.log('a starting');
export let done = false;
import {done as B_done}  from './b.js';
console.log('in a, b.done = %j', B_done);
done = true;
console.log('a done');
export default {
    done
}
      //b.js
console.log('b starting');
export let done = false;
import {done as A_done} from './a.js';
console.log('in b, a.done = %j', A_done);
done = true;
console.log('b done');
export default {
    done
}

Но результат изменился.

ReferenceError: Cannot access 'A_done' before initialization

Произошла эта ошибка.

Почему это дает мне другой результат, чем commonjs?

Неesmoduleвернуть незаконченные модули?

Вы можете найти этот пример кода здесь

0 ответов

Другие вопросы по тегам