Akhir-akhir ini saya merasa seperti saya telah berjuang dengan mesin template Ejs. Saya mendapatkan dan pengidentifikasi tak terduga yang sepertinya saya tidak tahu mengapa itu terjadi.

Kesalahan

SyntaxError: path\views\main.ejs:34

Yang merupakan baris kode berikut dari main.ejs

<%- include('partials/comments'); %>

Kemudian pesan kesalahan berlanjut sebagai berikut,

Unexpected identifier in path\views\partials\comments.ejs while compiling ejs

Baris yang relevan dari main.ejs

<div class="col-sm-4">
    <%- include('partials/stats'); %>
    <%- include('partials/popular'); %>
    <%- include('partials/comments'); %>
</div>

partials/comments.ejs

<div class="panel-body">
    <ul class="media-list">
        <% for(int i = 0; i < sidebar.comments.length; i++){ %>
            <li class="media">
                <a class="pull-left" href="/images/<%- sidebar.comments[i].image.uniqueId %>">
                    <img class="media-object" width="45" height="45" src="/public/upload/ <%- sidebar.comments[i].image.filename  %>">
                </a>
                <div class="media-body"><%- sidebar.comments[i].comment %>
                    <br/>
                    <strong class="media-heading"> <%- sidebar.comments[i].name %></strong>
                    <small class="text-muted"> <%- timeago(sidebar.comments[i].timestamp) %></small>
                </div>
            </li>
        <% } %>
    </ul>
</div>

Apa yang menyebabkan kesalahan ini dan bagaimana cara mengatasinya?

Saya pikir masalahnya ada pada ejs dan bukan Viewmodel yang dikirim ke template comments.ejs. Untuk jaga-jaga, saya telah mencantumkan fungsi-fungsi ini di bawah ini.

Seperti apa viewModel

const ViewModel = {
    image:{
        uniqueId: 1,
        title: 'Sample Image 1',
        description: 'This is a sample.',
        filename: 'sample1.jpg',
        Views: 0,
        likes: 0,
        timestamp: Date.now()
    },
    comments: [
        {
            image_id: 1,
            email: 'test@testing.com',
            name: 'Test Tester',
            gravatar: 'http://lorempixel.com/75/75/animals/1',
            comment: 'This is a test comment...',
            timestamp: Date.now()
        }, {
            image_id: 1,
            email: 'test@testing.com',
            name: 'Test Tester',
            gravatar: 'http://lorempixel.com/75/75/animals/2',
            comment: 'Another followup comment!',
            timestamp: Date.now()
        }
    ],
    state:'Images',
};

image.js

const sidebar = require('../helpers/sidebar');
const path = require('path');

module.exports = {
    index(req, res) {
        sidebar(ViewModel, (ViewModel) => {
            res.render('main', ViewModel);
        });
    }
}

bilah sisi

const Stats = require('./stats')
const Images = require('./images')
const Comments = require('./comments');

module.exports = (ViewModel, callback) => {
    ViewModel.sidebar = {
        stats: Stats(),
        popular: Images.popular(),
        comments: Comments.newest()
    };
    callback(ViewModel);
};

komentar.js

module.exports = {
    newest() {
        let comments = [
            {
                image_id: 1,
                email: 'test@testing.com',
                name: 'Test Tester',
                gravatar: 'http://lorempixel.com/75/75/animals/1',
                comment: 'This is a test comment...',
                timestamp: Date.now(),
                image: {
                    uniqueId: 1,
                    title: 'Sample Image 1',
                    description: '',
                    filename: 'sample1.jpg',
                    Views: 0,
                    likes: 0,
                    timestamp: Date.now
                }
            }, 
            {
                image_id: 1,
                email: 'test@testing.com',
                name: 'Test Tester ',
                gravatar: 'http: //lorempixel.com/75/75/animals/2',
                comment: 'Another followup comment!',
                timestamp: Date.now(),
                image: {
                     uniqueId: 1,
                     title: 'Sample Image 1',
                     description: '',
                     filename: 'sample1.jpg',
                     Views: 0,
                     likes: 0,
                     timestamp: Date.now
                }
            }
        ];
        return comments;
    }
};
0
Simple 2 Juli 2020, 02:40

1 menjawab

Jawaban Terbaik

Pesan kesalahan:

Unexpected identifier in partials/comments.ejs while compiling ejs

Memberi tahu kami bahwa kesalahannya ada di comments.ejs, dan tentu saja:

<% for(int i = 0; i < sidebar.comments.length; i++){ %>

Secara khusus, int harus let atau var.

1
Russopotomus 2 Juli 2020, 04:42