Typescript 通过ES6导入导入commonJS模块,类型';上不存在属性;进口类型
我有以下类型脚本模块 server.tsTypescript 通过ES6导入导入commonJS模块,类型';上不存在属性;进口类型,typescript,es6-modules,commonjs,Typescript,Es6 Modules,Commonjs,我有以下类型脚本模块 server.ts // server.ts import express from 'express'; const app = express(); module.exports = { App: app, }; 索引 // index.ts import * as App from './server'; console.log(App.App); 在编译以下程序时,我得到以下错误。 “导入类型”(“src/server”)上不存在属性“App” 从概念
// server.ts
import express from 'express';
const app = express();
module.exports = {
App: app,
};
索引
// index.ts
import * as App from './server';
console.log(App.App);
在编译以下程序时,我得到以下错误。
“导入类型”(“src/server”)上不存在属性“App”
从概念上讲,它为什么会失败
特别令人困惑的几点是,在打印导入的server.js时,就像
// alternate server.ts
import * as App from './server';
console.log(App);
我在日志中得到了output express应用程序结构,如下所示
{
App: [Getter],
default: {
App: [Function: app] EventEmitter {
emit: [Function: emit],
addListener: [Function: addListener],
on: [Function: addListener],
...
get: [Function],
notify: [Function],
options: [Function],
patch: [Function],
post: [Function],
...
listen: [Function: listen],
request: [IncomingMessage],
response: [ServerResponse],
...
locals: [Object: null prototype],
mountpath: '/',
_router: [Function]
}
}
}
如果它出现在console.log的结构中,为什么我不能通过代码访问它。不要将ES6导入与commonjs导出混合使用。尝试从“/server”导入{default as App}@Bergi如果我同时使用commonjs和ES6模块使用库,我将在某个时间点正确地面对这个问题。。。我们如何避免和解决这些。。。因此,试着了解它们是如何在内部工作的。当您同时使用两者时,可能会遇到这个问题,但这里您有一个ES6模块(考虑到它使用的是
import-express from'express';
-甚至在import*as-App from./server';
)中使用ES6导入)它没有像应该的那样使用export
语法。