我一直在研究客户端文件如何在 Express 中查找路由功能。我的应用程序结构是这样的,
|-root
|--public
|---files
|---scripts
|---css
|--views
...
客户端html如下,位于/public/files
中。它可以正确渲染到 http://localhost:3000/files/like_animal.html
。
<html>
<body>
<form action="/handleForm" method="post">
name: <input name="usename"><br>
I like <input name="animal"><br>
<input type="submit" value="Go">
</form>
</body>
</html>
js文件就是这样,
var express = require('express');
var app = express();
var path = require('path');
app.use(express.static(path.join(__dirname + 'public')));
console.log('start');
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/handleForm', (req, res) => {
var name = req.body.name;
var animal = req.body.animal;
console.log(name + " " + animal);
res.send('Thank you');
});
app.listen(3000, () => {
console.log('Listening on port 3000');
});
现在我不确定应该把这个js文件放在哪里。我尝试将它放在/public/scripts
或root
中,甚至也放在中/公共(public)/文件
。但没有任何作用。每次提交表单时,浏览器总是显示Cannot POST/handleForm
。作为一名刚接触 express 一周的新手,我完全迷失了。任何提示将不胜感激。非常感谢。
最佳答案
您应该将脚本放在root
中,然后像这样指定公共(public)路径。
app.use(express.static(path.join(__dirname, 'public')));
另外注意一下,app.use
是用来制作中间件的。您应该使用 app.post
定义您的路线。
app.post('/handleForm', (req, res) => {
// ...
});
关于javascript - 如何在express中使用路由路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46517342/