假设我在TypeScript中有一个模块:
export default function myModule(name: string): void {
alert(`Hello, ${name}!`)
}
当我运行tsc
来构建以上代码时,尝试通过Node.js(纯JavaScript)导入生成的代码:
const myModule = require('./dist/myModule.js')
myModule('Luiz') // ERROR! `myModule` is `undefined`
使其生效的唯一方法是在.default
之后使用require()
,这不是我想要的:
// ↓↓↓↓↓↓↓↓
const myModule = require('./dist/myModule.js').default
myModule('Luiz') // Now it works.
如何使TypeScript生成一个输出,稍后将该输出用作Node.js模块(因为我将包发布到NPM中)而没有该.default
属性?就是这样:
const myModule = require('my-module')
先谢谢了。 :)
答案 0 :(得分:1)
使用export =
构建可导出函数的CommonJS模块。
TypeScript支持
export =
来建模传统的CommonJS和AMD工作流程...export =
语法指定从模块导出的单个对象。这可以是类,接口,名称空间,函数或枚举。
myModule.ts
export = function myModule(name: string): void {
console.log(`Hello, ${name}!`)
}
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs"
}
}
myModule.js(输出)
"use strict";
module.exports = function myModule(name) {
console.log("Hello, " + name + "!");
};
demo.js(用法)
const myModule = require('./my-module');
myModule('Luiz'); // Hello, Luiz!