【问题标题】:Getting Cannot GET /获取无法获取 /
【发布时间】:2021-03-15 23:06:53
【问题描述】:

我们使用 Nextjs/Reactjs 作为我们的 FE,并且我们有一个 server.js 文件,可以让我们在 public/images/uploads 上上传图像,但由于某种原因,每当我们运行服务器时,我们都会收到错误 Cannot GET /

这是我们在 server.js 上的代码

const { createServer } = require('http');
const { parse } = require('url');
const next = require('next');
const express = require('express');
const multer = require('multer');
const cors = require('cors');

const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
var app = next({ dev });
const handle = app.getRequestHandler();
const appExpress = express();

app.prepare().then(() => {
  createServer((req, res) => {
    const parsedUrl = parse(req.url, true)
    const { pathname, query } = parsedUrl

    if (pathname === '/a') {
      app.render(req, res, '/a', query)
    } else if (pathname === '/b') {
      app.render(req, res, '/b', query)
    } else {
      handle(req, res, parsedUrl)
    }
  }).listen(port, err => {
    if (err) throw err
    console.log(`> Ready on http://localhost:${port}`)
  })
})

appExpress.use(express.static('public'))

let storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'public/images/uploads')
  },
  filename: (req, file, cb) => {
    cb(null, Date.now() + '-' + file.originalname)
  }
});
const upload = multer({ storage })

appExpress.use(cors());

appExpress.post('/upload', upload.single('image'), (req, res) => {
  if (req.file)
    res.json({
      imageUrl: `images/uploads/${req.file.filename}`
    });
  else
    res.status("409").json("No Files to Upload.");
});

const PORT = 5000;

appExpress.listen(PORT);
console.log('api running on port: ' + PORT);

这些是我们 package.json 中包含的脚本

    "dev": "next",
    "build": "next build && next export",
    "start": "next start",
    "server": "node server.js"
  },

希望得到一些答案和建议。此代码在本地运行没有任何问题

【问题讨论】:

  • 您没有为 / 定义的 GET 路由。谁试过GET /
  • 抱歉,我想获取来自 reactjs/nextjs 的构建。不知道会有什么调整。顺便说一句,这在本地工作没有任何问题
  • “我想获得来自 reactjs/nextjs 的构建”是什么意思?
  • 当然这个错误不仅仅来自运行服务器。当然,这一定是您尝试做某事时出现在浏览器中的错误。那么你在浏览器中做了什么来引发错误呢?您的浏览器尝试访问哪些端点?其中之一是/ 端点吗?如果是这样,那么它为什么要访问您尚未实现的端点?什么代码访问了不存在的端点?如果它在本地工作,你在做什么来尝试“不在本地”运行它?请提供调试详情。

标签: node.js reactjs next.js


【解决方案1】:

您需要为 GET / 添加一个路由,如下所示:

appExpress.get('/', (req, res) => {
    res.json({server: 'Running..!'});
});

【讨论】:

  • 对不起,我如何从那里运行 reactjs/nextjs 的构建?
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 2020-11-19
  • 2020-04-27
  • 2014-09-05
  • 2021-12-26
  • 2015-05-11
  • 2016-12-22
  • 2012-01-23
相关资源
最近更新 更多