Uncaught SyntaxError: Unexpected identifier on res.Render - NodeJS

Uncaught SyntaxError: Unexpected identifier on res.Render - NodeJS

我在使用 res.Render() 发送变量时在客户端遇到错误。

我想发送一个包含数组的对象:

节点:

var countries_lat_lng = [];
        trip.countries.forEach(country => {
            var country_lat_lng = {'latlng': CountriesJSON.find(f => f.alpha2Code == country.code).latlng};
            countries_lat_lng.push(country_lat_lng);
        });
        console.log(countries_lat_lng); //value: [ { latlng: [ -27, 133 ] }, { latlng: [ -41, 174 ] } ]
        res.render('myView', {
            coutriesLatLng: {countries_lat_lng}
        });

Javascript:

        var countriesMarkers = <%= coutriesLatLng %>;

我在 chrome 上有以下错误:

    var countriesMarkers = [object Object]; Uncaught SyntaxError: Unexpected identifier

当我 console.log() 我的 countries_lat_lng 变量时,一切似乎都正常,但呈现在 javascript 中我有一个错误。 非常感谢您的帮助。

试试这个

var countriesMarkers = JSON.stringify('<%- coutriesLatLng %>');

我也看到这里有问题

res.render('myView', {
      coutriesLatLng: {countries_lat_lng}
});

我觉得应该是

res.render('myView', {
      coutriesLatLng: countries_lat_lng
});

<%= ... %> 用于输出 HTML,因此它所做的是将您的对象转换为字符串并 HTML 对其进行编码以供输出。由于您正在生成 JavaScript,因此您要做的是将数据的 JSON 以非转义格式直接输出到您的 JS 代码中。

假设 coutriesLatLng 是一个 Array,更改为:

var countriesMarkers = <%= coutriesLatLng %>;

...收件人:

var countriesMarkers = <%- JSON.stringify(coutriesLatLng) %>;

JSON.stringify 会将您的数组转换为 JSON,这可以解释为 JavaScript 表达式。 <%- 用于输出 JSON 而无需 HTML-转义它,因此 " 不会变成 &quot;,例如。