2016-08-04 21 views
1

Ich versuche, eine App auf Heroku mit Dropbox Sync zu implementieren, aber es sagt, internen Serverfehler, und die Protokolle zeigen dies:Heroku App fehlt HTML-Modul?

2016-08-04T16:39:11.536583+00:00 app[web.1]:  at require (internal/module.js:20:19) 
2016-08-04T16:39:11.536571+00:00 app[web.1]: Error: Cannot find module 'html' 
2016-08-04T16:39:11.533835+00:00 heroku[router]: at=info method=GET path="/" host=comboracle.herokuapp.com request_id=3d60846c-2426-4a6f-a7a9-dbf89e5786b5 fwd="174.67.241.64" dyno=web.1 connect=0ms service=79ms status=500 bytes=232 

Meine index.js Datei wird als solche eingerichtet:

var express = require('express'); 
var app = express(); 
app.set('port', (process.env.PORT || 5000)); 

app.use(express.static(__dirname + '/public')); 
app.set('views', __dirname + '/public'); 

app.get('/', function(request, response) { 
    response.render('public/handcheck.html'); 
}); 

app.listen(app.get('port'), function() { 
    console.log('The app is live on port' + app.get('port')); 
}); 

Und mein package.json wie folgt aussieht:

{ 
    "name": "combo-oracle", 
    "description": "combo probability evaluator for tcgs", 
    "repository": "https://github.com/heroku/comboracle", 
    "keywords": ["node", "express", "static"], 
    "scripts": { 
    "start": "node index.js" 
    }, 
    "version": "0.0.1", 
    "dependencies": { 
    "express": "*" 
    } 
} 

wie ich es verstehe, html keine spezifischen Module benötigen sollten zu arbeiten. Meine lokalen Tests haben gezeigt, dass das Rendern von .html-Dateien funktioniert hat, aber ich bin mir nicht sicher, was hier vor sich geht.

Antwort

0

Sie können response.render nicht verwenden, ohne eine View-Engine definiert zu haben. Wenn Sie die Methode render verwenden möchten, benötigen Sie , um eine View-Engine wie ejs zu verwenden.

Wenn Sie nur eine statische HTML-Datei machen möchten, können Sie dies wie folgt tun:

var express = require('express'); 
var ejs = require('ejs'); 

var app = express(); 
app.set('port', (process.env.PORT || 5000)); 

app.use(express.static(__dirname + '/public')); 
app.set('views', __dirname + '/public'); 
app.engine('html', ejs.renderFile); 
app.set('view engine', 'html'); 

app.get('/', function(request, response) { 
    response.render('public/handcheck.html'); 
}); 

app.listen(app.get('port'), function() { 
    console.log('The app is live on port' + app.get('port')); 
});