#node.js #typescript #express #ts-node-dev
Вопрос:
когда я бегу npm run dev
, я не могу открыть «http://localhost:3000» в хроме.
Выполнение задачи:
> npm run dev
node-framework-kit@1.0.0 dev /Users/xiaoqi/node-workplace/node-framework-kit
ts-node-dev --respawn --transpile-only ./src/app.ts
[INFO] 16:44:02 ts-node-dev ver. 1.1.8 (using ts-node ver. 9.1.1, typescript ver. 4.4.2)
Вот мой сервер.ts:
import app from './app'
const PORT=3001;
app.listen(PORT,()=>{
console.log(`Express server listening on port ${PORT}`);
})
вот мое приложение.ts:
import express from 'express'
import {json,urlencoded} from 'body-parser'
import cors from 'cors'
import morgan from 'morgan'
class App{
public app:express.Application;
constructor(){
this.app=express();
this.config();
this.app.get('/',(req,res)=>{
res.send({message:'hello express!!!!!'})
})
}
private config(){
this.app.use(cors())
this.app.use(json());
this.app.use(urlencoded({extended:false}))
this.app.use(morgan('dev'))
}
}
export default new App().app
вот мой пакет.json:
{
"name": "node-framework-kit",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "tsc",
"dev": "ts-node-dev --respawn --transpile-only ./src/app.ts",
"restart": "rimraf dist amp;amp; npm run build amp;amp; npm start",
"start":"node ./dist/server.js",
"prod":"npm run build amp;amp; npm run start"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@types/cors": "^2.8.12",
"@types/express": "^4.17.13",
"@types/node": "^16.7.13",
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"mongoose": "^6.0.5"
},
"devDependencies": {
"@types/morgan": "^1.9.3",
"morgan": "^1.10.0",
"rimraf": "^3.0.2",
"ts-node-dev": "^1.1.8",
"typescript": "^4.4.2"
}
}
вот мой tsconfig.json:
{
"compilerOptions": {
"target": "es2018",
"module": "commonjs",
"sourceMap": true,
"outDir": "./dist",
"removeComments": true,
/* Strict Type-Checking Options */
"strict": true,
"noImplicitAny": false,
"strictNullChecks": true,
"alwaysStrict": true,
/* Module Resolution Options */
"moduleResolution": "node",
"baseUrl": "./src",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
},
"include": [
"./src/**/*"
]
}
Комментарии:
1. извините. это моя ошибка, я забыл сменить пакет.json
2. Что вы подразумеваете под тем, что я не могу открыть » localhost:3000 » ? В чем ошибка ?
3. я запускаю неправильный файл, запускаю приложение.ts не может запустить экспресс — службу
Ответ №1:
дело сделано! просто измените сценарии в пакете.json «ts-node-dev —respawn —только для переноса ./src/app.ts» неверно, нужно изменить его на «ts-node-dev —respawn —только для переноса ./src/server.ts»
Комментарии:
1. Этот ответ не поможет другим людям с той же проблемой. Пожалуйста, расскажите, в чем заключалась реальная проблема и как она была устранена — что вы изменили? Спасибо.
2. «ts-node-dev —respawn —только для переноса ./src/app.ts» неверно, нужно изменить его на «ts-node-dev —respawn —только для переноса ./src/server.ts»
3. @taoxiaoqi вы должны добавить это в свой ответ (редактировать).