【问题标题】:Express app (with TypeScript ) not responding to routesExpress 应用程序(带有 TypeScript )不响应路由
【发布时间】:2023-02-17 05:02:43
【问题描述】:

我有以下问题:

我正在制作一个休息 api,但当我向端点发出请求时,我的应用程序甚至没有进入操作?

这是我的服务器设置

import express, { Express } from 'express';
import cookieParser from 'cookie-parser';
import cors from 'cors';
import characterRouter from '../modules/character/router';
import userRouter from '../modules/user/router';
import itemsRouter from '../modules/item/router';

require('dotenv').config();

const app: Express = express();

app.use(cors);

//Setup cookieParser and public folder
app.use(cookieParser());

//Setup bodyParser
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

app.get('/items', (req, res) => {
    console.log('OK');
    res.json({ ok: true });
});

app.listen(3000, () => {
    console.log(`Server listnening on port ${process.env.SERVER_PORT}`);
});

这是我第一次使用导入语法,可能是因为它吗?

当我发出请求 GET localhost:3000/items 它甚至不去 console.log

配置.json :

{
    "compilerOptions": {
        "target": "es2016",
        "module": "commonjs",
        "outDir": "./dist",
        "esModuleInterop": true, 
        "forceConsistentCasingInFileNames": true,
        "strict": true, 
        "skipLibCheck": true,
    }
}

【问题讨论】:

  • 你编译了你的打字稿代码吗?
  • 你试过运行index.ts吗?那你做错了。你需要运行dist/index.js。您可以使用tsc && node ./dist/index.js 制作一个 npm 脚本来运行您的应用程序
  • 你甚至收到控制台消息Server listening ...etc。我建议您将代码缩减为最简单的必需子集并首先对其进行测试。我将 node.js 与 const express = require("express"); const app=express(); 一起使用,然后放置你的 app.get 和 app.listen 并且它工作正常。
  • 你是如何测试api的?你得到响应体了吗?
  • 弄清楚了。我认为要么是 npm cors 在烦我,要么是 cookie-parser npm。我删除了它们,现在它工作正常

标签: javascript node.js typescript express


【解决方案1】:
import express, { Express } from 'express';
import cookieParser from 'cookie-parser';
import cors from 'cors';
import characterRouter from '../modules/character/router';
import userRouter from '../modules/user/router';
import itemsRouter from '../modules/item/router';

require('dotenv').config();

const app: Express = express();

app.use(cors);

//Setup cookieParser and public folder
app.use(cookieParser());

//Setup bodyParser
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

// You missing
app.use('/', indexRouter);
app.use('/users', usersRouter);

app.get('/items', (req, res) => {
    console.log('OK');
    res.json({ ok: true });
});

app.listen(3000, () => {
    console.log(`Server listnening on port ${process.env.SERVER_PORT}`);
});

【讨论】:

    【解决方案2】:

    删除app.use(cors);

    我不知道为什么,但它对我有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-29
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      相关资源
      最近更新 更多