如何在快递中使用路径?

时间:2017-10-01 22:04:53

标签: javascript node.js express

我坚持弄清楚客户端文件如何在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/scriptsroot中,甚至也放在/public/files中。但没有任何作用。每次提交表单时,浏览器都会显示Cannot POST /handleForm。作为一个为期一周的快递新手,我完全迷失了。任何提示将不胜感激。非常感谢。

1 个答案:

答案 0 :(得分:1)

您应该将脚本放在root,然后像这样指定公共路径。

app.use(express.static(path.join(__dirname, 'public')));

另一个注意事项,app.use用于制作中间件。您应该使用app.post定义路线。

app.post('/handleForm', (req, res) => {
  // ...
});