【发布时间】: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 的构建”是什么意思?
-
当然这个错误不仅仅来自运行服务器。当然,这一定是您尝试做某事时出现在浏览器中的错误。那么你在浏览器中做了什么来引发错误呢?您的浏览器尝试访问哪些端点?其中之一是
/端点吗?如果是这样,那么它为什么要访问您尚未实现的端点?什么代码访问了不存在的端点?如果它在本地工作,你在做什么来尝试“不在本地”运行它?请提供调试详情。