Можно ли в es6 импортировать модуль commonjs? - PullRequest
1 голос
/ 14 марта 2019

У меня есть модуль commonjs, который был сгенерирован Typescript 3.3.3.

Можно ли использовать его с оператором импорта es6?Вот что я попробовал.

Сгенерированный модуль экспортирует CountUp следующим образом:

exports.CountUp = CountUp;

В моем файле main.js:

import { CountUp } from './js/countUp.js';

И в index.html:

  <script src="./js/countUp.js"></script>
  <script src="./main.js" type="module"></script>

Но я получаю

countUp.js: 13 Uncaught ReferenceError: экспорт не определен в countUp.js: 13

1 Ответ

2 голосов
/ 14 марта 2019

Краткий ответ: Нет


При использовании es6 вам нужно экспортировать, используя export, а не exports.exports - это функция commonjs, в основном используемая в узле, а не в веб-браузере.

Если вы хотите использовать commonjs, вам нужно использовать стороннюю библиотеку, такую ​​как requirejs , но для этого используются require(), а не import, а exports и неexport.После этого вы сможете написать свой код, используя импорт / экспорт с машинописным текстом, но он будет скомпилирован с использованием require, а requirejs обработает все остальное.

Итак, чтобы правильно использовать его в браузере, выбудет делать это так:

test.js

export function Test() {
  console.log('hello')
}

index.js

import { Test } from './test.js'
Test()

Тогда когдаВы загружаете файл в свой HTML, тест функции будет выполнен.

<script src="index.js" type="module"></script>
...