Есть ли способ импортировать из этого узла модуля с помощью «import» вместо «require»? - PullRequest
0 голосов
/ 22 мая 2019

Я использую этот модуль узла 'deep-equal' (), и до сих пор единственный способ, которым я смог получить доступ к этой функции, - это var equal = require('deep-equal');, как предложено в документации.Я обычно использую import вместо require, и мне интересно, возможно ли использовать import с этим модулем.Основная функция экспортируется из файла в этой строке:

var deepEqual = module.exports = function (actual, expected, opts) {...}

Можно ли импортировать эту функцию с помощью import или это возможно только с require?

Спасибо!

1 Ответ

1 голос
/ 22 мая 2019

Да, вы действительно можете.

Если вы используете nodejs LTS, вам придется использовать расширение .mjs для файла, в котором вы используете import, и передавать флаг experimental-modules при запуске node процесса.

// foo.mjs
import equal from 'deep-equal';

node --experimental-modules foo.mjs

Начиная с nodejs 12.3.0 вы можете просто пропустить experimental-modules. Из документов

После включения Node.js будет обрабатывать следующее как модули ES при передаче на узел в качестве начального ввода или при ссылке на операторы импорта в коде модуля ES

Также вы можете указать type как module в вашем package.json:

// package.json
{
  "type": "module"
}

Из документов

Файлы, оканчивающиеся на .js или .mjs или не имеющие какого-либо расширения, будут загружены в виде модулей ES, когда ближайший родительский файл package.json содержит поле верхнего уровня «type» со значением «module»

...