将数据从EJS发布到Node.js

将数据从EJS发布到Node.js,node.js,ejs,fetch-api,Node.js,Ejs,Fetch Api,我有一个由koa/Node.js应用程序呈现的index.htmlEJS,其中包含一个javascript片段,用于将当前页面的数据发布到同一个应用程序,并保存到数据库中的端点 javascript代码(AJAXfetch POST)到达Node.js端点,但不传输任何数据。我没有看到代码中有任何拼写错误 [CORRECTION]确实是bodyparser的拼写错误 #index.js const膝关节炎=要求(“膝关节炎”); 常量路径=要求(“路径”); const render=requi

我有一个由koa/Node.js应用程序呈现的index.htmlEJS,其中包含一个javascript片段,用于将当前页面的数据发布到同一个应用程序,并保存到数据库中的端点

javascript代码(AJAX
fetch POST
)到达Node.js端点,但不传输任何数据。我没有看到代码中有任何拼写错误

[CORRECTION]确实是bodyparser的拼写错误

#index.js
const膝关节炎=要求(“膝关节炎”);
常量路径=要求(“路径”);
const render=require(“koa ejs”);
const bodyParser=require(“koa bodyParser”);
const router=require(“./routes/routes.js”);
const-app=新Koa();
渲染(应用程序{
root:path.join(uu dirname,“/views”),
布局:假,
viewExt:“html”,
});
应用程序
.use(bodyParser())
.use(router.routes())
.use(router.allowedMethods())
.use(staticCache(“./images”,{maxAge:600000}))
.侦听(端口,()=>{
log(`Running on port${port}`);
});
index.html中,我有一个按钮,可以触发对koaRouter端点(
/node/insert
)的POST请求。操作是将有关当前页面的信息(例如,
document.location.href
)保存到Postgres数据库中

#/views/index.html
[...]
[...]
其中:

#/views/fetch.js
常数数据={
应用程序:“节点”,
url:document.location.href,
...
};
document.getElementById(“newRow”).addEventListener(“提交”,(e)=>{
e、 预防默认值();
获取(“/node/insert”{
方法:“张贴”,
标题:{
“内容类型”:“应用程序/json;字符集-UTF-8”,
},
正文:JSON.stringify(数据),
})
。然后((res)=>{
如果(res.ok){
返回res.json();
}
返还承诺。拒绝(res);
})
.然后((res)=>console.log(“front”,res))
.catch((err)=>console.warn(err));
在这些路由中,我定义了一个端点
/node/insert
,以响应此操作:

#routes.js
const koaRouter=require(“koa路由器”);
const router=new koaRouter();
router.post(“/node/insert”),异步(ctx)=>{
console.log(“posted”,ctx.request.body);
^^^“已发布”在提交后在终端上正面打印
if(ctx.请求.正文){
返回(ctx.response.status=200)
}否则{
返回(ctx.response.status=404);尝试:


只是埃弗特指出的bodyparser中的一个输入错误和中间件的错误定位


< > >代码> CURL——数据“APP= No.http://LooHoal::/Noth< /Cord>响应正常。< /P>您在寻找体分析器中间件吗?我尝试添加“App.Uple(BoyPARSERE)),并用“BydiPARSER =要求(KOA BODYPARSER)”,但这给了我一个我无法解决的错误:“JSON在位置0中的意外令牌O”,膝关节炎路由是“路由器”(“/”节点/插入“,…)”在“routes.js”文件中。然后这是用容器运行的,所以我相信url是可以的(如果我插入“console.log”,则“post”端点在终端中会做出肯定的响应,但主体是“{}”)。我添加了404以显示“ctx.requeset.body”是空的。这没有任何作用。我理解它只是一个“prettyfier”根据海报,问题是由打字错误引起的。
const koaJson = require(koa-json);
app.use(koaJson());