Recibo TypeError: this.engine no es una función. No sé por qué estoy recibiendo este error. ¿Alguien puede ayudarme a resolver este problema?
Mi archivo de servidor:
var express = require('express'); var path = require('path'); var app = express(); //configure app app.set('view engine', 'html'); app.set('views', path.join(__dirname, 'views')); app.get('/', function (req, res) { res.render('index'); }); app.listen(3000, function() { console.log('Ready on port 1337'); });Y mi archivo HTML:
<!DOCTYPE html> <html> <head> </head> <body> <div>Hello Express</div> </body> </html>me sale el error
Mi paquete.json:
{ "name": "app", "version": "1.0.0", "main": "index.html", "directories": { "test": "test" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "mehadi", "license": "UNLICENSED", "dependencies": { "express": "4.13.0", "html": "^1.0.0" }, "repository": { "type": "git", "url": "(github.com/mehadi07/Random.git)" }, "devDependencies": {}, "description": "" } Instalé el motor html a través de
npm instalar --guardar html
El paquete html que ha instalado no está relacionado con Express. Así que no es sorprendente que si le dices a Express que lo use, falla.
Si busca servir archivos HTML estáticos, consulte las respuestas a esta pregunta y la documentación de Express . La forma más sencilla es simplemente
app.use(express.static('views'));El paquete html no es un motor de plantillas que se pueda usar con Express. En su lugar, es una bonita utilidad CLI de impresora HTML .
Consulte Uso de motores de plantillas con Express para obtener una lista de motores de plantillas que funcionan bien con Express.