web-dev-qa-db-fra.com

Guidon - Attendu que 'OPEN_INVERSE_CHAIN', 'INVERSE', 'OPEN_ENDBLOCK', a obtenu 'EOF'

J'essaie le guidon et j'utilise le modèle simple suivant pour cela:

<html>

<head></head>

<body>

    <h1>{{title}}</h1>
    <p>{{body}}</p>

    {{#each list}}
    <ul>
        <li>{{@index}}. {{this}}</li>
    </ul>
    </br>
    {{{htmlTag}}} 

    {{#if user.admin}}
    <button class="launch">Launch Spacecraft</button> {{else}}
    <button class="login"> Log in</button> 
    {{/if}} 
    {{!-- This is a comment --}}

</body>
</html>

Ma app.js ressemble à ceci:

require('dotenv').config()
const express = require('express')
const logger= require('morgan')
const path = require('path')

const app = express()

app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'hbs')
app.use(logger(process.env.LOG_ENV))

app.get('/', (req, res) => {
    const titel = "This is a titel"
    const body = "Lorem ipsum dolor sit amen ..."
    const list = ['Apple', 'banana', 'vegetable']
    const htmlTag = '<h2>This is an unescaped Heading</h2>'
    const user = {
    admin: true
  }
    res.render('index',{titel, body, list, htmlTag, user})
})


// Start Server
const port = process.env.APP_PORT || 8080
const Host = process.env.APP_URL || '0.0.0.0'

app.listen(port, Host, () => {
    console.log(`Listening on ${Host}:${port}/`)
})

module.exports = app

Lorsque je rend la page, j'obtiens l'erreur suivante:

Erreur: /home/ubuntu/workspace/src/views/index.hbs: erreur d'analyse à la ligne 20: ...}} ------------------- ^ Expecting ' OPEN_INVERSE_CHAIN ​​',' INVERSE ',' OPEN_ENDBLOCK ', a obtenu' EOF 'sur Object.parseError (/home/ubuntu/workspace/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js:267:19) sur Object. analyser (/home/ubuntu/workspace/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js:336:30) à HandlebarsEnvironment.parse (/ home/ubuntu/workspace/node_modules/guidbars/dist/cjs/guidbars /compiler/base.js:46:43) à compileInput (/home/ubuntu/workspace/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:514:19) à ret (/ home/ubuntu/workspace /node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:523:18) sur /home/ubuntu/workspace/node_modules/hbs/lib/hbs.js:63:19 sur tryToString (fs.js: 456 : 3) à FSReqWrap.readFileAfterClose [comme oncomplete] (fs.js: 443: 12)

Une suggestion sur ce que je fais mal dans mon modèle?

J'apprécie votre réponse!

11
Anna.Klee

États d'erreur:

Attendant (...), obtenu EOF

Où:

  1. (...) est ce à quoi il peut s'attendre
  2. EOF est la fin du fichier

Ce qui vous manque, c'est de fermer {{/each}}:

{{#each list}}
<ul>
    <li>{{@index}}. {{this}}</li>
</ul>
</br>
{{{htmlTag}}} {{#if user.admin}}
<button class="launch">Launch Spacecraft</button> {{else}}
<button class="login"> Log in</button> {{/if}} {{!-- This is a comment --}}
{{/each}} <!-- HERE -->
21
wscourge

Ceci est toujours le résultat de la fermeture non plus de {{each}}, {{if}} ou tout autre instructions controll, mais cela ne peut pas être causé par des balises html non fermées comme <div>, <p> ou toute autre balise html.

4
Krafty Coder