我已经使用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?