Узел ejs forEach, вызывающий ошибку «Политика безопасности контента» - PullRequest
0 голосов
/ 15 февраля 2019

Я так рад опубликовать мой первый запрос переполнения стека.: D

Я недавно начал курс Node.js, и в связи с этим я просто хочу отметить, что я пока не занимаюсь хардкорными вещами.

У меня работает сервер локальных узловс nodemon.Я начал работать с ejs и обнаружил, что цикл forEach по какой-то причине растапливает мою веб-страницу.

Я попытался провести исследование и проанализировать свой код, удаляя по частям определенные части, которых не было до проблемы, покапроблема исчезла и обнаружила, что когда я извлекаю цикл forEach из своего кода в файле ejs, проблема исчезает.

//this is my .js file located in my ./routes folder

const express = require('express');
const router = express.Router();
const admin_data = require('./admin');

router.get('/', (req, res, next) => {
    const products = admin_data.products;
    res.render('shop', {
        page_title: 'Shop',
        prods: products
    });
});

//nothing too hectic.

//this is my ejs file located in my ./views folder.

<% if (prods.length > 0) { %>
        <div class="grid">
            <% forEach (var products in prods) { %> //if i remove this and it's closing '}' it works fine.
            <article class="card product-item">
                <header class="card__header">
                    <h1 class="product__title">product</h1>
                </header>
                <div class="card__image">
                    <img src="" alt="A Book">
                </div>
                <div class="card__content">
                    <h2 class="product__price">$19.99</h2>
                    <p class="product__description">A very interesting book about so many even more interesting things!
                    </p>
                </div>
                <div class="card__actions">
                    <button class="btn">Add to Cart</button>
                </div>
            </article>
            <% } %>
        </div>
        <% } %>

Я ожидаю, что код отобразит страницу, но вместо этого получит error :

«SyntaxError: неожиданный токен {в C: \ Users \ Ruan Buitendag \ Documents \ NodeJS \ Practice Server \ views \ shop.ejs во время компиляции ejs» в моем терминале vscodeи «Политика безопасности содержимого: настройки страницы заблокировали загрузку ресурса при подключении (« default-src »)» в консоли браузера.

РЕДАКТИРОВАТЬ: PS.Я попытался запустить страницу в Firefox Developer Edition, обычном Firefox и Google Chrome.

1 Ответ

0 голосов
/ 15 февраля 2019

Я думаю, что проблема в вашем цикле.Используйте forEach таким образом:

<% prods.forEach(function(product) { %>
<article class="card product-item">
    <header class="card__header">
       <h1 class="product__title">product</h1>
    </header>
    <div class="card__image">
       <img src="" alt="A Book">
    </div>
    <div class="card__content">
        <h2 class="product__price">$19.99</h2>
        <p class="product__description">A very interesting book about so many even more interesting things!</p>
    </div>
    <div class="card__actions">
        <button class="btn">Add to Cart</button>
    </div>
</article>
<% }) %>

В качестве альтернативы вы можете использовать для ... цикла следующим образом:

<% for (var product of prods) { %>
...
...