# Cài đặt chương trình nodejs sử dụng code typescript và express ## Khởi tạo project ``` npm init -y ``` ## Cài đặt các dependeccy ``` express dotenv cors helmet npm i --save-dev @types/node @types/express @types/dotenv @types/cors @types/helmet typescript ``` Ngoài ra khi bạn sử dụng nodejs với typescript thì đôi khi sẽ gặp tình huống một package không có các loại build-in, bạn có thể cài đặt định nghĩa kiểu thông qua @types npm namespace - nơi lưu trữ các định nghĩa kiểu của TypeScript trong project DefiniteTyped. Khi các package được cài đặt, các types sẽ tự động được compiler của TypeScript include vào. Bạn còn thiếu 1 thứ không quan trọng mấy là ts-node 😄 Cái này thì khi bạn muốn chạy nodejs thì chạy node index.js nhưung với typescript thì dùng lệnh khác là ts-node index.ts nên phải cài: ``` npm i -D ts-node ``` ## Khởi tạo TypeScript với Node.js ``` npx tsc --init ``` * tạo folder src * tạo file index.ts trong src ![](https://i.imgur.com/qEfVa9n.png) * Tiếp theo tạo biến môi trường: .env nội dung port=4000 ![](https://i.imgur.com/QsWdch7.png) Mình có thêm cái khúc watch-ts để mục đích là chạy terminal cái đó nó sẽ đứng lắng nghe sự thay đổi của folder src, chỉ cần có thay đổi là nó sẽ build code folder src thành folder dist với mã code js. Nếu không build được như mình nói bạn hãy vào file tsconfig.json sửa lại 2 thông số sau: ![](https://i.imgur.com/VZ3h2A0.png) ``` npm run watch-ts ``` ## Build code nodejs qua nodemon ``` npm i --save-dev nodemon npm i -g nodemon ``` sau khi cài xong nodemon thì chúng ta update lại file package.json đoạn script như dưới: ``` { "name": "server", "version": "1.0.0", "main": "index.js", "license": "MIT", "scripts": { "start": "node dist/index.js", "server": "nodemon dist/index.js", "start-ts": "ts-node src/index.ts", "server-ts": "nodemon --exec ts-node src/index.ts", "watch": "tsc -w" }, "devDependencies": { "@types/cors": "^2.8.12", "@types/express": "^4.17.13", "@types/node": "^17.0.21", "nodemon": "^2.0.15", "ts-node": "^10.6.0", "typescript": "^4.6.2" }, "dependencies": { "cors": "^2.8.5", "dotenv": "^16.0.0", "express": "^4.17.3", "helmet": "^5.0.2" } } ``` sau đó chạy 2 terminal với 2 lệnh: lắng nghe thay đổi ts và build ra file js trong folder dist ``` npm run watch ``` khi folder dist mà được build thì nhờ nodemon chạy hot reload ``` npm run server ``` ## Code file index.ts ``` /** * Required External Modules */ import * as dotenv from "dotenv"; import express from "express"; import cors from "cors"; import helmet from "helmet"; dotenv.config(); /** * App Variables */ const PORT: number = parseInt((process.env.PORT as string) || '3000', 10); const app = express(); /** * App Configuration */ app.use(helmet()); app.use(cors()); app.use(express.json()); /** * Server Activation */ const server = app.listen(PORT, () => { console.log(`Listening on port ${PORT}`); }); ```