无法将数据从快递传递到ejs?

问题描述 投票:0回答:3

我试图通过将一个对象转换为JSON,其中JSON数据在控制台上显示,但尝试传递它显示错误时,尝试使用res.send("filename.ejs",data将数据从js文件(sample.js)传递给ejs

TypeError:无法在字符串上创建属性“_locals”

有人可以帮助解决这个问题并告诉我如何在ejs文件中调用它们

mysql express ejs
3个回答
0
投票

res.send()用于发送数据,不需要指向ejs文件

res.send将数组作为参数(res.send([body])),您可以在{{data}}之类的ejs中获取它

例如

NODEJS res.send({message:'hello'})

filename.ejs

<div>{{ message }}</div> or <%= JSON.stringify(message)  %>

另外Express 5x不支持你可以使用的res.send()方法

res.status(200).send({message: 'hello})

(你不承认你表达版本)


0
投票

请注意,您不应在.ejs中使用res.render扩展,尽管您的问题的其他答案表明您这样做。 当你调用res.render('myView')时,ejs会在名为myView.ejs的文件夹中查找名为views的模板(它被设置为ejs使用的默认文件夹)

例如:

res.render('myView.ejs',{
  data:data,
  foo:'foo'
});

ejs将寻找一个名为myView.ejs.ejs的视图(或者它可能只是完全失败)。

要访问模板上的数据,您需要执行以下操作:

app.js:

app.get('/somePathHere', function(req, res) {
  res.render('myView',{
    data:data,
    foo:'foo'
  });
});

myView.ejs:

<% data.forEach(function(item) { %>
    //do something

<% }); %>

<%= foo %>

请注意,访问变量时,使用<%= varNameHere %>,在编写任何类型的函数时,您将省略=


0
投票

您正在向视图发送数据,因此请使用此更新代码并尝试

   res.render("filename",{
                        data:"hello"
                      });

或者您可以传递整个数据

 res.render("filename",{data:data});

在你的ejs文件中,像这样访问它

 <div> <%= data %> <div>
© www.soinside.com 2019 - 2024. All rights reserved.