Я думаю, что это проблема от Node, но я не уверен в этом - PullRequest
0 голосов
/ 14 марта 2020

Это ошибка, которую я получил:

 TypeError: C:\Users\PowerHell\Desktop\fanteziesiculoare\views\store.ejs:81
            79|         <div class="row gallery-gird">

            80|             <div class="col-lg-4 col-xl-3 col-sm-6">

         >> 81|                 <% items.music.ForEach(function(item){ %>

            82|                     <div class="shop-item" data-item-id="<%= item.id %>">

            83|                 <a class="gallery-item fresco" href="img/projects/<%= item.imgName %>" data-fresco-group="projects">

            84|                     <img class="shop-item-image" src="img/projects/<%= item.imgName %>" >


        Cannot read property 'ForEach' of undefined
            at eval (eval at compile (C:\Users\PowerHell\Desktop\fanteziesiculoare\node_modules\ejs\lib\ejs.js:618:12), <anonymous>:11:20)
            at returnedFn (C:\Users\PowerHell\Desktop\fanteziesiculoare\node_modules\ejs\lib\ejs.js:653:17)
            at tryHandleCache (C:\Users\PowerHell\Desktop\fanteziesiculoare\node_modules\ejs\lib\ejs.js:251:36)
            at View.exports.renderFile [as engine] (C:\Users\PowerHell\Desktop\fanteziesiculoare\node_modules\ejs\lib\ejs.js:482:10)
            at View.render (C:\Users\PowerHell\Desktop\fanteziesiculoare\node_modules\express\lib\view.js:135:8)
            at tryRender (C:\Users\PowerHell\Desktop\fanteziesiculoare\node_modules\express\lib\application.js:640:10)
            at Function.render (C:\Users\PowerHell\Desktop\fanteziesiculoare\node_modules\express\lib\application.js:592:3)
            at ServerResponse.render (C:\Users\PowerHell\Desktop\fanteziesiculoare\node_modules\express\lib\response.js:1008:7)
            at C:\Users\PowerHell\Desktop\fanteziesiculoare\server.js:22:11
            at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:61:3)

Это моя часть e js:

 <% items.music.ForEach(function(item){ %>
                            <div class="shop-item" data-item-id="<%= item.id %>">
                        <a class="gallery-item fresco" href="img/projects/<%= item.imgName %>" data-fresco-group="projects">
                            <img class="shop-item-image" src="img/projects/<%= item.imgName %>" >
                            <div class="gi-text">
                                <h4 class="shop-item-title"><%= item.name %> </h4>
                                <span class="shop-item-price"><%= item.price / 100 %>Ron</span>

                            </div>
                        </a>
                        <button class="btn btn-primary shop-item-button" type="button">Adauga in cos</button>           </div> 
                    <% }) %>

И это то, что я сделал в файле Node:

const fs = require('fs')
const stripe = require('stripe')(stripeSecretKey)

app.set('view engine', 'ejs')
app.use(express.json())
app.use(express.static('public'))

app.get('/store', function(req, res) {
  fs.readFile('items.json', function(error, data) {
    if (error) {
      res.status(500).end()
    } else {
      res.render('store.ejs', {
        stripePublicKey: stripePublicKey,
        items: JSON.parse(data)
      })
    }
  })
})

1 Ответ

0 голосов
/ 14 марта 2020

Предполагая, что items.music является массивом, это просто опечатка.

Вам необходимо использовать forEach вместо ForEach.

 <% items.music.forEach(function(item) { %>

Если после исправления этого При возникновении той же ошибки возникает проблема со свойством items.music.

Запустите console.log(JSON.parse(data).music) на сервере для проверки проблемы.

...