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

Javascript 导出要与require()一起使用的node.js类,javascript,node.js,webpack,ecmascript-6,babeljs,Javascript,Node.js,Webpack,Ecmascript 6,Babeljs,我正在导出以下类: export default class Tester { } 问题是,当我传输此文件并将其导入时: const Tester = require('./dist/Tester'); 问题是要使用Tester类,我需要这样使用它: const example = new Tester.Tester(); 如何将其导出,因此我可以: const example = new Tester(); 您可以尝试修改导入块以使用对象分解: const{Tester}=requir

我正在导出以下类:

export default class Tester {
}
问题是,当我传输此文件并将其导入时:

const Tester = require('./dist/Tester');
问题是要使用Tester类,我需要这样使用它:

const example = new Tester.Tester();
如何将其导出,因此我可以:

const example = new Tester();

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

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

这种奇怪的语法实际上是由于您使用了两种不同的导入/导出方言es6和commonjs造成的。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";
// -- 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");
在nodejs中实现commonjs

  • 导出是使用
    模块编写的。导出
  • 导入使用
    require()
例如:

// -- es6

// tester.js

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

// main.js

import Tester, { SomeConsts } from "./tester";
// -- 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():

您正在使用哪个版本的节点?您是在节点端使用babel进行传输,还是在节点中使用本机EJS支持?我明白了,但假设我有一个index.js文件,可以导出Tester和SomeConsts。有没有办法使Tester成为“默认”导出,这样当我需要它时,我就可以执行const TesterModule=require(“./Tester.js”);const x=新的TesterModule()@johnnyshrewd在module.exports中只能导出1个根对象。如果你想保留一些常量,你必须让它成为Tester的一部分tester.js类tester{static SomeConsts={}}module.exports=tester//main.js const tester=require(“./tester.js”)const TesterInstance=new tester()```