猿问

运行节点服务器时出现 404

嗨学习使用节点和其他后端组件并在运行一个简单的输入表单时遇到这个 404:


Not Found

404


NotFoundError: Not Found

    at /Users/samgniel/Desktop/saas-tutorial/app.js:25:8

    at Layer.handle [as handle_request] (/Users/samgniel/Desktop/saas- 

tutorial/node_modules/express/lib/router/layer.js:95:5)

    at trim_prefix (/Users/samgniel/Desktop/saas- 

tutorial/node_modules/express/lib/router/index.js:317:13)

    at /Users/samgniel/Desktop/saas-tutorial/node_modules/express/lib/router/index.js:284:7

    at Function.process_params (/Users/samgniel/Desktop/saas- 

tutorial/node_modules/express/lib/router/index.js:335:12)

    at next (/Users/samgniel/Desktop/saas- 

tutorial/node_modules/express/lib/router/index.js:275:10)

    at SendStream.error (/Users/samgniel/Desktop/saas-tutorial/node_modules/serve- 

static/index.js:121:7)

    at SendStream.emit (events.js:210:5)

    at SendStream.error (/Users/samgniel/Desktop/saas- 

tutorial/node_modules/send/index.js:270:17)

    at SendStream.onStatError (/Users/samgniel/Desktop/saas- 

tutorial/node_modules/send/index.js:421:12)

输入表单的代码是:


<form action="/signup" method="post">

  <input required type="email" name="email" id="emailForm" placeholder="Your Email">

  <input type="password" name="password" id="passwordForm" placeholder="Password">

  <input type="submit" name="" id="" value="Signup!">

</form>

.js 调用函数是:


app.post('/signup', function(req, res, next) {

console.log(req.body);

});

帮助解决此错误将不胜感激:)


哈士奇WWW
浏览 232回答 2
2回答

心有法竹

抱歉耽搁了...我试图在代码沙箱上托管它...你可以像这样制作你的节点端const express = require("express");const bodyParser = require("body-parser");const cors = require("cors");const path = require("path");const app = express();const router = express.Router();const PORT = process.env.PORT || 5000;app.use(cors());app.use(bodyParser.urlencoded({ extended: false }));app.use(bodyParser.json());router.get("/", function(req, res) {&nbsp; res.sendFile(path.join(__dirname + "/index.html"));});router.post("/signup", (req, res) => {&nbsp; console.log(req.body);});app.use(router);app.listen(PORT, () => {&nbsp; console.log(`Server started at PORT:${PORT}`);});并创建一个 HTML 文件,您将在其中使用 fetch API 使用 API像这样的东西<!DOCTYPE html><html>&nbsp; <head>&nbsp; &nbsp; <meta charset="UTF-8" />&nbsp; &nbsp; <meta name="viewport" content="width=device-width, initial-scale=1.0" />&nbsp; &nbsp; <meta http-equiv="X-UA-Compatible" content="ie=edge" />&nbsp; &nbsp; <title>Document</title>&nbsp; </head>&nbsp; <body>&nbsp; &nbsp; <form action="/signup" method="post">&nbsp; &nbsp; &nbsp; <input&nbsp; &nbsp; &nbsp; &nbsp; required&nbsp; &nbsp; &nbsp; &nbsp; type="email"&nbsp; &nbsp; &nbsp; &nbsp; name="email"&nbsp; &nbsp; &nbsp; &nbsp; id="emailForm"&nbsp; &nbsp; &nbsp; &nbsp; placeholder="Your Email"&nbsp; &nbsp; &nbsp; />&nbsp; &nbsp; &nbsp; <input&nbsp; &nbsp; &nbsp; &nbsp; type="password"&nbsp; &nbsp; &nbsp; &nbsp; name="password"&nbsp; &nbsp; &nbsp; &nbsp; id="passwordForm"&nbsp; &nbsp; &nbsp; &nbsp; placeholder="Password"&nbsp; &nbsp; &nbsp; />&nbsp; &nbsp; &nbsp; <input type="submit" name="" id="submit" value="Signup!" />&nbsp; &nbsp; </form>&nbsp; &nbsp; <script>&nbsp; &nbsp; &nbsp; const emailForm = document.querySelector('#emailForm');&nbsp; &nbsp; &nbsp; const passwordForm = document.querySelector('#passwordForm');&nbsp; &nbsp; &nbsp; const submit = document.querySelector('#submit');&nbsp; &nbsp; &nbsp; const submitFetch = (url, data) => {&nbsp; &nbsp; &nbsp; &nbsp; fetch(url, {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; method: 'POST',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mode: 'cors',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cache: 'no-cache',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; credentials: 'same-origin',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; headers: {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Content-Type': 'application/json'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; redirect: 'follow',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; referrer: 'no-referrer',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; body: JSON.stringify(data)&nbsp; &nbsp; &nbsp; &nbsp; }).then(response => response.json());&nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; &nbsp; submit.addEventListener('click', e => {&nbsp; &nbsp; &nbsp; &nbsp; e.preventDefault();&nbsp; &nbsp; &nbsp; &nbsp; const data = {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; email: emailForm.value,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; password: emailForm.value&nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; &nbsp; &nbsp; submitFetch('http://localhost:5000/signup', data);&nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; </script>&nbsp; </body></html>如果您想现场观看...我将其托管在代码沙箱上https://codesandbox.io/s/lucid-cannon-x1wu1

天涯尽头无女友

您似乎没有向客户返回任何响应。您可以纠正的一种方法是使用 express 提供的 res 对象中的 send 函数。app.post('/signup', function(req, res, next) {&nbsp; &nbsp; console.log(req.body);&nbsp; &nbsp; res.send('Hello World') // this can also take an object as response. res.send({ msg: 'hello world' })});重新调整这条线也可能会有所帮助 ok comment out this line app.use(function(req, res, next) { next(createError(404)); });希望这可以帮助。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答