我坚持弄清楚客户端文件如何在express中查找路由功能。我的app结构就是这样,
|-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/files
中。但没有任何作用。每次提交表单时,浏览器都会显示Cannot POST /handleForm
。作为一个为期一周的快递新手,我完全迷失了。任何提示将不胜感激。非常感谢。
答案 0 :(得分:1)
您应该将脚本放在root
,然后像这样指定公共路径。
app.use(express.static(path.join(__dirname, 'public')));
另一个注意事项,app.use
用于制作中间件。您应该使用app.post
定义路线。
app.post('/handleForm', (req, res) => {
// ...
});