所以我写了这个youtube网站上https://www.youtube.com/watch?v=NA21dUBfJhw&list=PL4cUxeGkcC9gcy9lrvMJ75z9maRw4byYp&index=33的教程中确切显示的所有代码(以及基于我的计算机的所有正确路径URL)教程(除了这个人不费力地写 const http = require('http') 以及其他用于localhost的东西,所以我在代码中添加了它。 下面是我的代码(与本教程的代码+本地主机设置完全相同)
下面的代码是app.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log('Server running at http://${hostname}:#{port}/');
});
var express = require('express');
var todoController = require('./todoController');
var app = express();
app.set('view engine', 'ejs');
app.use(express.static('./'));
todoController(app);
下面的代码是todo.ejs
<html>
<head>
<title>Todo List</title>
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-
CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script>
<link href="/Public/styles.css" rel="stylesheet"
type="text/css">
</head>
<body>
<div id="todo-table">
<form>
<input type="text" name="item" placeholder="Add new
item..." require />
<button type="submit">Add Item</button>
</form>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
</body>
</html>
下面的代码是todoController.js
module.exports = function(app) {
app.get('/todo', function(req, res){
res.render('todo');
});
app.post('/todo', function(req, res){
});
app.delete('/todo', function(req, res){
});
};
答案 0 :(得分:2)
您创建了两个服务器,一个使用http模块,另一个使用Express,但是您仅侦听http服务器。
只需将“ server.listen”功能移到todoController(app)之后,然后将“ server”更改为“ app”即可
import React from { react }
import Card from "./Card"
const CardList = ({ robots }) => {
//const cardComponent=robots.map((user,i)=>{
return (
// key prop should have something that should not be changed
<div>
{
robots.map((user, i) => {
<Card
key={i}
id={robots[i].id}
name={robots[i].name}
email={robots[i].email} />
})
}
</div>
)
}
export default CardList
在这种情况下,您的服务器将收听Express。
答案 1 :(得分:1)
您创建了2台服务器,因此http
和express
无法在同一端口上侦听。
要确定将使用的明确主机名和端口,请尝试以下操作:
const myExpress = app.listen(port, hostname, () => {
const addr = myExpress.address();
const url = `http://${addr.address}:${addr.port}/`;
// eslint-disable-next-line no-console
console.log(`Listening Services on ${url} family ${addr.family}`);
});
您将获得express使用的正确参数,而不是您提供的主机名和端口。
它如何有用?因为如果由于某种原因端口繁忙,节点将不会总是出现故障,而是会搜索第一个可用端口。
测试服务器的默认路径/
:
app.get("*", function(req, res) {
console.log("ok default connection to the server works");
res.send("ok default connection to the server works");
});