使用 TypeScript 设置 Node Express API(2021)
本教程将帮助您使用 TypeScript 快速设置 Node express API。
这里完成的所有步骤都可以通过我的 Github 存储库克隆https://github.com/roycechua23/node-express-typescript-starter
生产环境重要提示:本博客旨在简化开发者的工作。因此,我们专注于初始设置,而非生产环境构建。对于生产环境构建,您仍然需要使用 tsc 将其转换为 JS。
"scripts": {
"start:dev": "ts-node-dev ./index.ts",
"start": "tsc && node ./lib/index.js",
},
请注意,lib 可以替换为 dist 或 TypeScript 配置文件(tsconfig.json)上的“outputDir”,我们稍后也会在本博客中讨论。
1. 先决条件
对于此博客,您需要在您的机器上安装 Node.js(v10+) 才能使其正常运行。
创建初始文件夹和 package.json
打开终端并使用创建文件夹和 package.json
mkdir node-express-typescript-starter && npm init
填写所有要求的信息。将入口点设置为 index.ts,并随意提供其他信息,并提供适当的值。
2.安装依赖项
您需要使用 npm 安装以下依赖项
npm install typescript --save-dev
npm install ts-node-dev --save-dev
npm install express
npm install @types/express --save-dev
npm install @types/node --save-dev
这只是一个最小设置。ts -node-dev依赖项将持续重新编译并直接运行 .ts 文件,而不是先编译 .ts 文件再运行 .js 文件。它将取代仅适用于 .js 文件的 nodemon。
3.创建 tsconfig.json 文件
您可以使用命令创建 TypeScript 配置文件
npx tsc --init
这将使用默认设置自动为您创建 tsconfig.json(您可以随时更改它们)。
4.修改package.json中的脚本
使用代码编辑器或 IDE,修改脚本:在 package.json 中包含关键字和值,如下所示
"scripts": {
"start": "ts-node-dev ./index.ts"
},
您现在可以删除测试密钥。
5.创建index.ts文件
使用代码编辑器创建 index.ts 文件并复制并粘贴示例代码:
import express, { Application, Request, Response } from "express";
const app: Application = express();
const port = 3000;
// Body parsing Middleware
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.get(
"/",
async (req: Request, res: Response): Promise<Response> => {
return res.status(200).send({
message: "Hello World!",
});
}
);
try {
app.listen(port, (): void => {
console.log(`Connected successfully on port ${port}`);
});
} catch (error) {
console.error(`Error occured: ${error.message}`);
}
6.运行代码
要运行 Node express API,只需运行命令
npm run start
现在控制台上应该显示消息“已成功连接到端口 3000” 。
如果您遇到错误“错误:监听 EADDRINUSE:地址已在使用中:::3000”,这意味着您当前在端口 3000 上运行其他服务(例如 React 应用程序、其他 Node.js 应用程序等)。
通过打开浏览器或 Postman 向localhost:3000发送 GET 请求来测试这一点。
6.尝试修改代码
尝试将返回消息“Hello World!”修改为任何你喜欢的消息。它应该会自动重启 Node 服务器,你可以再次尝试查看变化。
恭喜,您现在已经成功使用 TypeScript 设置了 Node Express API,而无需执行任何其他复杂任务。
非常感谢您对这篇文章的支持。请我喝杯咖啡对我来说意义重大
https://www.buymeacoffee.com/royce.chua