导出与require()一起使用的node.js类

问题描述 投票:0回答:2

我正在导出以下课程:

export default class Tester {
}

问题是,当我将其转换并导入时:

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

问题是要使用Tester类,我需要像这样使用它:

const example = new Tester.Tester();

我如何导出它,所以我这样做:

const example = new Tester();
javascript node.js webpack ecmascript-6 babel
2个回答
0
投票

您可以尝试修改导入块以使用对象分解:

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

0
投票

奇怪的语法实际上是由您使用2种不同的导入/导出方言es6和commonjs引起的。通过Babel转换,您可以在同一系统中使用这两种方法。

在es6中

  • 导出用export编写
  • 导入使用import编写

示例:

// -- es6

// tester.js

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

// main.js

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

在commonjs的nodejs实现中

  • 导出用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类成为导出的根并且仍然要导出SomeConsts,则必须使SomeConsts成为Tester类的一部分。

// -- commonjs

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

module.exports = {}

// main.js

const Tester = require("./tester.js")
const TesterInstance = new Tester():
© www.soinside.com 2019 - 2024. All rights reserved.