Класс node.js экспорта для использования с require () - PullRequest
0 голосов
/ 29 февраля 2020

Я экспортирую следующий класс:

export default class Tester {
}

Проблема заключается в том, что когда я переносу это и импортирую его с помощью:

const Tester = require('./dist/Tester');

Проблема заключается в том, чтобы использовать класс Tester Мне нужно использовать его так:

const example = new Tester.Tester();

Как я могу его экспортировать, поэтому я делаю:

const example = new Tester();

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Странный синтаксис на самом деле вызван тем, что вы используете 2 разных диалекта импорта / экспорта, es6 и общий js. Babel Transpilation позволяет использовать оба в одной системе.

В es6

  • экспорт записывается с export
  • импорт записывается с import

Пример:

// -- es6

// tester.js

export default class Tester {}  // default export
export const SomeConsts = {}    // named export

// main.js

import Tester, { SomeConsts } from "./tester";

В nodejs реализация общего js

  • экспорт записывается с module.exports
  • импорт записывается с require()

Пример:

// -- commonjs

// tester.js

class Tester {}
const SomeConsts = {}

module.exports = { Tester, SomeConsts }  // arbitrary export

// main.js

const TesterModule = require("./tester.js");
const Tester = TesterModule.Tester;
const SomeConsts = TesterModule.SomeConsts;

// --or--

const { Tester, SomeConsts } = require("./tester.js");

Редактировать :

Если вы хотите Tester класс для быть root экспорта и все еще хотеть экспортировать SomeConsts, вам нужно будет сделать SomeConsts частью Tester класса.

// -- commonjs

// tester.js
class Tester {
  static SomeConsts = {}
}

module.exports = {}

// main.js

const Tester = require("./tester.js")
const TesterInstance = new Tester():
0 голосов
/ 29 февраля 2020

Вы можете попробовать изменить блок импорта, чтобы использовать деструктуризацию объекта:

const { Tester } = require('./dist/Tester');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...