我是新的Node js,我想从html文件路由一个页面,但它不工作-Node js路由问题



我是node js的新手,我有我的index.html和app.js

我的index . html

<!DOCTYPE html>
<html>
<!-- \ Bootstrap CDN -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
<body>
<style>
.input-group{
padding: 30px;
}
#button{

margin-left: 30px;
}
</style>
<form action="/users" method="get" >
<div class="input-group">
<span class="input-group-text">First and last name</span>
<input type="text" name="name" class="form-control">
<input type="text" aria-label="Last_name" class="form-control">
<input type="submit" class="btn btn-primary" id="button">
</div>
</form>
</body>
</html>

我app.js


//For users page route
const express = require('express')
const app =  express()
app.get('/users',(req,res)=>{
res.send("data page")
console.log("data page")
})
// FOR THE HTML PAGE
const http = require('http')
const fs = require('fs')
const server = http.createServer((req, res) => {
res.writeHead(200, { 'content-type': 'text/html' })
fs.createReadStream('index.html').pipe(res)
})
server.listen(process.env.PORT || 3000)

当我运行app.js文件时,它没有记录"数据页"。当我点击提交按钮从我的index.html,需要帮助,我不确定路由是否正确。

如果你还没有启动你的express应用,就没有必要使用express的HTTP模块。

如果你想在express中发送一个HTML文件(假设HTML文件在同一个目录中)。

const express = require('express')
const app =  express()
app.get('/',(req,res)=>{
res.sendFile('index.html',{root: __dirname });
});
app.get('/users',(req,res)=>{
res.send("data page")
console.log("data page")
})
app.listen(process.env.PORT || 3000);

如果你想使用流,你可以遵循Rahul's Answer

如果你仍然想使用express的HTTP模块,你可以阅读这篇文章。为什么要把http模块和express模块组合在一起

将app.js代码改为

const fs = require('fs')
const express = require('express')
const app = express()

app.get('/', (req, res) => {
// for html page
res.writeHead(200, { 'content-type': 'text/html' })
fs.createReadStream('index.html').pipe(res)
})

app.get('/users', (req, res) => {
res.send("data page")
console.log("data page")
})

app.listen(process.env.PORT || 3000)

在你当前的app.js文件中有一个路由问题,因为所有的路由都会渲染index.html页面

最新更新