#javascript
#javascript
Вопрос:
Я не понимаю, почему я не могу импортировать определенный класс — я устраняю недопонимание чего-то фундаментального с импортом модуля.
Итак, допустим, у меня есть index.js файл с именем ‘MyModule’:
'use strict';
const One = require('./One.js');
const Two = require('./Two.js');
const Three = require('./Three.js');;
module.exports = {
One,
Two,
Three
};
И скажем, One.js
выглядит примерно так:
'use strict';
class One {
constructor(...) { ... }
...
}
module.exports = One;
Когда я собираюсь использовать этот модуль в своем коде, я в настоящее время делаю:
const myMod = require('MyModule');
// Then I use it like so:
const something = new myMod.One(...)
Это работает нормально, однако почему мне не разрешено делать:
import { One } from require('MyModule')
В дополнение к тому, почему это не работает, выгодно ли импортировать только то, что мне нужно использовать?
Ваши объяснения приветствуются.
Спасибо.
Комментарии:
1. Вы не импортируете и не требуете. Выполните одно или другое:
import { One } from 'MyModule'
2. Я пробовал это, но получаю ошибку
SyntaxError: Cannot use import statement outside a module
Ответ №1:
Есть два способа, которыми вы можете импортировать путем деструктурирования:
import { One } from 'MyModule' // This is only allowed within modules not on the main program
или
const { One } = require('MyModule');
Комментарии:
1. Второй вариант работает —
const { One } = require('MyModule');
но первый дает мнеSyntaxError: Cannot use import statement outside a module
2. На самом деле это нормально: nodejs.org/api/esm.html#esm_package_json_type_field