在服务器上找不到Typescript NodeJS Express

时间:2019-08-25 04:05:00

标签: node.js typescript express

我已经使用express在Typescript中构建了NodeJS Api。一切都能在我的本地计算机上完美运行。

我已经在本地编译它并生成了我需要的所有文件。我什至在本地执行了已编译的Node Api,它可以正常工作。

当我将文件复制到服务器并在生产服务器上运行“节点服务器”时,出现错误消息“找不到Express”。为什么?

我认为运输过程包括项目的所有导入,包括Express,body-parser等。我是否还必须在服务器上安装所有这些软件包?还是我在移植过程中缺少了什么?

这是我的tsconfig.json文件:

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "lib": ["es2017", "dom"],
    "outDir": "../dist/api",
    "baseUrl": ".",
    "paths": {
        "*": [
            "../node_modules/*"
        ]
    }
  }
}

这是我的server.ts文件:

import express from 'express';
import bodyParser from 'body-parser';
import { Application } from 'express';

import { DomainRoutes } from './domain.routes';

const app: Application = express();
const domainRoutes: DomainRoutes = new DomainRoutes();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

domainRoutes.init(app, express);

const port = process.env.PORT || 9001;
app.listen(port, () => {
  console.log(`Api server running on http://localhost:${port}`);
});

这是我的域路由文件:

import { Application, Request, Response } from 'express';
import { ResponseBase } from './response-base';
import cors from 'cors';
import { DataManager } from './data/data.manager';

export class DomainRoutes {
  apiRoutes: any;
  domainRoutes: any;

  init(app: Application, exp: any) {
    this.apiRoutes = exp.Router();
    this.domainRoutes = exp.Router();

    app.use(cors());

    this.apiRoutes.use('/domains', this.domainRoutes);

    this.domainRoutes.get('/', (req: Request, res: Response) => {
      const dataManager = new DataManager();
      dataManager.read('domains', (err: any, data: any) => {
        if (err) {
          return res.sendStatus(400);
        } else {
          const response = new ResponseBase();
          response.success = true;
          response.data = data;

          res.status(200).json(response);
        }
      });
    });

    app.use('/api', this.apiRoutes);
  }
}

为什么在服务器上找不到Express?

0 个答案:

没有答案