所以我陷入了一個非常基本的路線錯誤。
專案結構:
- controllers
authentication.js
- routes
auth.js
pages.js
- views
register.html
- server.js
各自的代碼
控制器/authentication.js
//...
exports.register = upload.none(), function (req, res) {
//...
}
//...
路線/auth.js
const express = require('express');
const authController = require("../controllers/authentication");
const router = express.Router();
router.post('/register', authController.register);
module.exports = router;
路線/pages.js
const express = require('express');
const router = express.Router();
router.get('/register', (req, res) => {
res.render('register');
});
module.exports = router;
意見/register.html
//...
<form action="/auth/register" method="POST" enctype="multipart/form-data" id="myForm">
/...
服務器.js
const express = require('express');
const path = require('path');
const app = express();
const { dirname } = require('path');
const publicDirectory = path.join(__dirname, './public');
app.use(express.static(publicDirectory));
app.set('view engine', 'html');
app.use('/', require('./routes/pages'));
app.use('/auth', require('./routes/auth'));
app.listen(8080, () => {
console.log('Server listening on port http://localhost:8080');
});
當我提交表單時,控制臺說
POST http://localhost:8080/auth/register 404 (Not Found)。
但是,如果我跳過該controllers/authentication.js部分并從exports.registerinroutes/auth.js中定義所有內容,router.post('/register', ....);它就可以正常作業。
我可能做錯了什么?
uj5u.com熱心網友回復:
嘗試將register中間件放在一個陣列中,現在它只匯出upload:
//...
exports.register = [upload.none(), function (req, res) {
//...
}];
//...
或者您可以將upload中間件移動到register中間件并從那里呼叫它:
const upload = multer().none();
exports.register = (req, res, next) => {
upload(req, res, (err) => {
//...
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/521270.html
上一篇:pyxmlschema:element*at*isnotanelementoftheschema
下一篇:express.js中的response.send正在向xhr發送回應,但xhr中的responseText為空
