我们使用nextjs/reactjs作为FE,并且我们有一个server.js文件,它允许我们在public/images/uploads
上传映像,但是由于某种原因,每当我们运行服务器时,都会出现错误不能获得/
下面是我们在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/添加一条路由,如下所示:
appExpress.get('/', (req, res) => {
res.json({server: 'Running..!'});
});