Uncaught SyntaxError: неожиданный идентификатор на res.Render - NodeJS - PullRequest
0 голосов
/ 27 мая 2020

Я обнаружил ошибку на стороне клиента при отправке переменной с помощью res.Render ().

Я бы хотел отправить объект с массивами в нем:

NodeJs:

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 () мой Country_lat_lng, вроде все в порядке, но отображается в javascript У меня ошибка. Большое спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

<%= ... %> предназначен для вывода HTML, поэтому он преобразует ваш объект в строку и HTML кодирует его для вывода. Поскольку вы генерируете JavaScript, вместо этого вы хотите вывести JSON ваших данных в неэкранированном формате непосредственно в код JS.

Предполагая, что coutriesLatLng - это an Array, измените это:

var countriesMarkers = <%= coutriesLatLng %>;

... на:

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

JSON.stringify преобразует ваш массив в JSON, что можно интерпретировать как JavaScript выражение. <%- предназначен для вывода этого JSON без HTML -экранирования, поэтому, например, " не становится &quot;.

0 голосов
/ 27 мая 2020

Попробуйте это

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

Также я вижу здесь проблему

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

Думаю, это должно быть

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