Typescript 通过ES6导入导入commonJS模块,类型';上不存在属性;进口类型

Typescript 通过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

// 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
语法。