Node.js 如何使用express node js将数据传递到另一个页面
这是我的密码。当它执行时,会显示一些错误Node.js 如何使用express node js将数据传递到另一个页面,node.js,express,Node.js,Express,这是我的密码。当它执行时,会显示一些错误 var express = Express(); express.post('/start', async function (req, res) { let data = req.body.name; console.log(data); var x = {name : data}; res.sendFile(path.join(__dirname, 'client/view', 'play.html', x)); }); 您正在将“x”变
var express = Express();
express.post('/start', async function (req, res) {
let data = req.body.name;
console.log(data);
var x = {name : data};
res.sendFile(path.join(__dirname, 'client/view', 'play.html', x));
});
您正在将“x”变量传递到导致错误的path.join方法中
res.sendFile(path.join(__dirname, 'client/view', 'play.html', x));
x是一个对象,path.join方法只接受字符串。一种方法是使用
ejs
模板语言(但您可以选择任何其他方法)
- 安装ejs(npm安装ejs)
- 在根目录中设置视图文件夹
/views
const app = require('express');
// set ejs as a view engine
app.set('view engine', 'ejs')
app.post('/start', (req, res) => {
const name = req.body.name;
// render your play.ejs file which is located in views
// /views/play.ejs
// second parameter is an object that will be accessible in your view
res.render('play', { name });
});
使用
语法在视图中显示数据
/views/play.ejs
<p><%= name %></p>
您能提供您遇到的错误吗?这将使我们更容易进行故障排除并帮助您。“(节点:18812)未经处理的PromisejectionWarning:TypeError:Path必须是字符串。在Object.join(path.js:489:7)'的assertPath(path.js:28:11)处收到{name:'kkrtkert'}。这是错误。res.sendFile()
不接受像x
这样的参数。也许您打算使用res.render()
?而且,您还错误地将x
传递到path.join()
。请尝试res.sendFile(path.join(uu dirname,'client/view,'play.html'),{data:x})代码>我还使用res.render('play',x)。但它也显示了这样的错误。。未经处理的PromisejectionWarning:错误:在Function.module.\u resolveFilename(module.js:547:15)中找不到模块“html”,因此如何将X转换为字符串..?首先为什么要将X传递到路径中?这没有任何意义。