{
"devDependencies": {
"@types/cors": "^2.8.13",
"@types/express": "^4.17.17",
"@types/morgan": "^1.9.4",
"@types/node": "^20.2.3",
"nodemon": "^2.0.22",
"ts-node": "^10.9.1",
"typescript": "^5.0.4"
},
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^16.0.3",
"express": "^4.18.2",
"morgan": "^1.10.0"
}
}
{
"scripts": {
"dev": "nodemon --exec ts-node src/index.ts",
"build": "tsc"
}
}
├── package-lock.json
├── package.json
├── src
│ ├── handlers
│ ├── index.ts
│ ├── modules
│ ├── router.ts
│ └── server.ts
└── tsconfig.json
// index.ts
import * as dotenv from "dotenv";
dotenv.config();
import app from "./server";
app.listen(3001, () => {
console.log("serve on http://localhost:3001");
});
// server.ts
import express from "express";
import router from "./router";
import morgan from "morgan";
import cors from "cors";
const app = express();
app.use(cors());
app.use(morgan("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use("/api", router);
app.use((err, req, res, next) => {
console.log(err);
res.json({ message: `had an error: ${err}` });
});
export default app;
// router.ts
import { Router } from "express";
const router = Router();
router.get("/", (req, res) => {
res.json({ msg: "hello " });
});
export default router;