NodeJS:打字稿从包装器导出expressjs

时间:2019-01-10 17:44:39

标签: javascript node.js typescript express npm

我已经在私有npm存储库上创建了ExpressJS包装器,我想导出自己的lib和expressjs本身,例如:

index.ts

export { myExpress } from './my-express'; // my express wrapper
import * as express from 'express';
export = express; // doesn't works!

如何在打字稿中制作?

2 个答案:

答案 0 :(得分:2)

Express 4的问题在于它使用了与ES模块不兼容的不赞成使用的CommonJS导出约定,它包含唯一的导出(express()工厂),其余的导出定义为其属性。它使用传统的TypeScript export = ...语法,因此无法将其重新导出为ES模块export * from 'express',也不能使用合成的默认重新导出export { default } from 'express'

鉴于模块应重新导出express的导出和myExpress的{​​{1}}导出,因此应为:

./my-express

它可以导入为:

import * as express from 'express';
export default express;

export { myExpress } from './my-express';

对于常规ES模块,import express, { myExpress } from '...'; 可以重新导出:

*

答案 1 :(得分:2)

export = express;语法不正确。

您将要执行以下操作之一:

import { myExpress } from './my-express';
import * as express from 'express';

export {
  myExpress,
  express
}

import { myExpress } from './my-express';
export { myEpxress }

import * as express from 'express';
export { express }