javascript - 如何在express中使用路由路径?

标签 javascript node.js express

我一直在研究客户端文件如何在 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/scriptsroot中,甚至也放在中/公共(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/

相关文章:

node.js/express : use router. 具有中间件功能的route()

javascript - Socket.io + NodeJS 不适用于 Heroku

javascript - Javascript 1.8.1 的 API 文档?

javascript - 从 CDN 加载时 Foundation JavaScript 出现问题

javascript - 如何在不使用正则表达式的情况下检查输入是否为表情符号?

javascript - Bootstrap 选项卡导航不起作用

javascript - Node.js 谷歌云平台数据存储日期比较

mysql - 显示数据库中的文章,但它有 html 标签

javascript - 使用 Node 显示 SQL 值

javascript - PDU模式支持[和]字符