NodeJS 如何在next.js中设置自定义koa.js服务器

au9on6nz  于 9个月前  发布在  Node.js
关注(0)|答案(1)|浏览(104)

我已经设置了自定义的koa.js服务器,每次我向API发出请求时,例如

/api/login

字符串
404总是找不到。
我试着寻找一个解决方案,但真的找不到。
下面是server.js文件

import '@babel/polyfill';
import dotenv from 'dotenv';
import 'isomorphic-fetch';
import next from 'next';
import Koa from 'koa';
import Router from 'koa-router';
import UserRouter from './routes/user';
import cors from '@koa/cors';

dotenv.config();

const compression = require('compression');

const port = parseInt(process.env.PORT, 10) || 3000;

const dev = process.env.NODE_ENV !== 'production';

const app = next({ dev });

const handle = app.getRequestHandler();

app.prepare().then(() => {
  const server = new Koa();
  const router = new Router();
  server.use(
    cors({
      origin: '*',
    })
  );

  router.get('*', async (ctx) => {
    await handle(ctx.req, ctx.res);
    ctx.respond = false;
  });

  server.use(UserRouter.routes()).use(UserRouter.allowedMethods());
  server.use(router.allowedMethods());
  server.use(router.routes());
  server.listen(port, (err) => {
    if (err) throw err;
    console.log(`Server ready on ${port}`);
  });
});

g9icjywg

g9icjywg1#

我试着这样做:

const Koa = require('koa')
const Router = require('koa-router')
const bodyParser = require('koa-bodyparser')
const session = require('koa-session')

const app = new Koa()
const router = Router()

router.get('/api/login',
  async (ctx, next) => {
    console.log('---------------- api/login')
    ctx.body = 'hello, api:login'
  })

app.use(router.routes(), router.allowedMethods())

app.listen(3000);
console.log('Koa server is listening  on 3000')

字符串
我可以在浏览器中得到结果

相关问题