我的问题并非完全在问题中,而是在同一页面中。
因此,我将路线导出到了我的主app.js
文件中,但是我的张贴路线无法正常工作。我的问题在代码下方,因为我需要您阅读代码才能清楚。
这是我将从中导出路由(registration.js)的文件:
const express = require("express");
const router = express.Router();
console.log("azerty");
router.post("/register", (req, res)=>{
console.log("qwerty");
res.stautus(200).send("hello");
});
module.exports = router;
这是我将导出路由(app.js)的主文件:
const express = require("express");
const app = express();
...
app.use("/register", require("./registration.js"));
这是我的html表单:
<form action="/register" method="post">
<input type="text" placeholder="First Name" name="fstName" required/>
<input type="text" placeholder="Last Name" name="lstName"required/>
<input type="submit" value="Submit"/>
</form>
我还有其他与此相关的问题:
azerty
时登录到控制台
http://localhost:3000/
?Cannot POST /register
并在开发人员工具中出现404
错误?而且我的路由处理程序中的代码无法运行。express.Route()
而仅在主要文件中使用express()
)?答案 0 :(得分:1)
azerty
已登录到控制台,这意味着该路由已导入并且有效。
您已经以正确的方式导出了路线。
我认为您应该在 return
中的res.stautus(200).send("hello");
之前使用registation.js
。
像这样:
const express = require("express");
const router = express.Router();
console.log("azerty");
router.post("/", (req, res)=>{
console.log("qwerty");
return res.stautus(200).send("hello");
});
module.exports = router;
要使用此发布请求,请使用如下的api:localhost:3000/register
答案 1 :(得分:1)
我认为您使用app.use(“ / register” ...)在路由中添加了前缀,现在它是/ register / register
Juste在app.js或您的路由文件中将其删除
const express = require("express");
const router = express.Router();
console.log("azerty");
router.post("/register", (req, res)=>{
console.log("qwerty");
res.stautus(200).send("hello");
});
module.exports = router;
const express = require("express");
const app = express();
...
app.use(require("./registration.js"));
我不知道这是否是正确的方法,这就是我像您一样所做的事情
//src/app.js
// Import
import postRoutes from './routes/post';
import authRoutes from './routes/auth';
...
// Endpoints
app.use(postRoutes);
app.use(authRoutes);
// src/routes/post.js
...
const Router = express.Router();
/**
* Routes
*/
Router.get('/post', getPosts);
Router.post('/post', isAuth, creationValidation(), createPost);
Router.put('/post/:id', isAuth, editValidation(), putPost);
Router.delete('/post/:id', isAuth, deletePost);
/**
* Export
*/
export default Router;
答案 2 :(得分:1)
首先,library(dplyr)
df1 %>%
add_count(Website)
# A tibble: 7 x 2
# Website n
# <chr> <int>
#1 Abc 3
#2 Abc 3
#3 Abc 3
#4 Xyz 2
#5 Xyz 2
#6 Pqr 1
#7 Uvw 1
被记录下来,因为它没有嵌套在任何函数中。它将仅登录运行时,而您在azerty
上对此没有任何影响。
第二,您http://localhost:3000/
是因为使用路由器时,根是传递给Cannot POST /register
的第一个参数-在当前设置中,app.use
是路由。
要解决此问题,请将/register/register
中的router.post
的第一个参数更改为registration.js
:
/
最后,对于导出路由,这是我看到的最常见的设置。
答案 3 :(得分:1)
第一:为什么我在http://localhost:3000/时,azerty为什么登录到控制台?
console.log("azerty")
在registration.js
的文件范围内,因此将在您的app.js
要求时立即记录。
此行足以触发控制台日志记录:app.use('/register', require('./registration'));
,因为当express在开始时将其作为中间件挂载时,需要该模块
第二个:为什么我不断收到Cannot POST / register并在开发人员工具中出现404错误?而且我的路由处理程序中的代码无法运行。
因为它在您认为已安装的位置未安装。
router.post("/register ...
在这里,您已经安装在/register
路径中,然后在app.use("/register", require("./registration.js"));
中,您已经安装了另一个/register
路径。将两者结合在一起,您将获得完整的路径,/register/register
(也请检查注释中的错字)
因此要安装到localhost:3000/register
,您必须定义如下(注意差异):
router.post("/", (req, res)=>{ ...
// and then
app.use("/register", require("./registration.js"));
// or simply
router.post("/register", (req, res)=>{ ...
// and then
app.use(require("./registration.js"));
最后:这是导出路由的正确方法吗(例如在路由文件中使用express.Route()而仅在主要文件中使用express())?
是的,这很好。但是请记住安装路径。