#javascript #node.js #express #ejs
#javascript #node.js #экспресс #ejs
Вопрос:
Я пытаюсь обслуживать .ejs file
через Express, но получаю эту ошибку
Ошибка: не был указан движок по умолчанию и не было предоставлено расширение. в новом представлении (C:developmentdashboardnode_modulesexpresslibview.js:62:11 ) в EventEmitter.render (C:developmentdashboardnode_modulesexpresslibapplication.js:569:12 ) в ServerResponse.render (C:developmentdashboardnode_modulesexpresslibresponse.js:961:7 ) в C:developmentdashboardapp.js:51:7
в Layer.handle_error (C:developmentdashboardnode_modulesexpresslibrouterlayer.js:71:5 ) в trim_prefix (C:developmentdashboardnode_modulesexpresslibrouterindex.js:310:13 ) в C:developmentdashboardnode_modulesexpresslibrouterindex.js:280:7 в функции.process_params (C:developmentdashboardnode_modulesexpresslibrouterindex.js:330:12 ) при следующем (C:developmentdashboardnode_modulesexpresslibrouterindex.js:271:10 ) в Layer.handle_error (C:developmentdashboardnode_modulesexpresslibrouterlayer.js:67:12 )
Вот мои файлы
index.ejs
<!DOCTYPE html>
<html>
<head>
<title>ETL Dashborad</title>
<script type="text/javascript" src="./resources/javascripts/jquery.min.js"></script>
<script>
window.GeorgeEnv = {};
window.GeorgeEnv.serverRunOnEnv = "<%= runOnEnv %>";
</script>
</head>
<body>
<div>HELLO</div>
<div id="app"></div>
<script type="text/javascript" src="./js/client.min.js"></script>
</body>
</html>
index.js
var ejs = require('ejs');
var fs = require('fs');
var EnvConfig = require('../src/utils/EnvHandler.js');
module.exports = function(app, dirname) {
var content = fs.readFileSync(dirname '/src/index.ejs', 'utf-8');
var compiled = ejs.compile(content);
app.get("/", function(req, res){
res.send(compiled({runOnEnv : EnvConfig.getProcessEnv()}));
});
app.all('/healthcheck', require('./routes/healthcheck'));
};
EnvHandler.js
const qa2Config = require('../resources/env-configs/qa2/env-config');
const prodConfig = require('../resources/env-configs/prod/env-config');
// Fetching the Env from the index.ejb file
var GeorgeEnv = GeorgeEnv || {};
var config = function() {
var envInfo = [];
envInfo['qa2'] = qa2Config.getEnvConfigs();
envInfo['production'] = prodConfig.getEnvConfigs();
var processEnv = process.env.NODE_ENV ? process.env.NODE_ENV : 'qa2';
processEnv = process.env.NODE_ENV.trim();
return {
getSsoUrl: function(env) {
if(env) {
return envInfo[env].ssoUrl;
}
return envInfo[processEnv].ssoUrl;
},
getSelfUrl: function(env) {
if(env) {
return envInfo[env].selfUrl;
}
return envInfo[processEnv].selfUrl;
},
getServerUrl: function(env) {
if(env) {
return envInfo[env].serverUrl;
}
return envInfo[processEnv].serverUrl;
},
getRunOnPort: function(env) {
if(env) {
return envInfo[env].runOnPort;
}
return envInfo[processEnv].runOnPort;
},
getProcessEnv: function() {
if(processEnv) {
return processEnv;
}
return 'qa2';
}
}
}();
Когда я меняю свой index.js файл возвращает только некоторый текст, он работает нормально. как res.send('Hello');
вместо res.send(compiled({runOnEnv : EnvConfig.getProcessEnv()}));
я получаю результат. Я даже могу видеть файл index.ejs, когда я делаю console.log(content);
в своем index.js
Любая помощь приветствуется.
Ответ №1:
Ошибка возникает из-за того, что ваш EnvHandler.js
ничего не экспортирует. Вам нужно экспортировать свою функцию, как module.exports = config
в EnvHandler.js
EnvHandler.js
const qa2Config = require('../resources/env-configs/qa2/env-config');
const prodConfig = require('../resources/env-configs/prod/env-config');
// Fetching the Env from the index.ejb file
var GeorgeEnv = GeorgeEnv || {};
var config = function() {
var envInfo = [];
envInfo['qa2'] = qa2Config.getEnvConfigs();
envInfo['production'] = prodConfig.getEnvConfigs();
var processEnv = process.env.NODE_ENV ? process.env.NODE_ENV : 'qa2';
processEnv = process.env.NODE_ENV.trim();
return {
getSsoUrl: function(env) {
if(env) {
return envInfo[env].ssoUrl;
}
return envInfo[processEnv].ssoUrl;
},
getSelfUrl: function(env) {
if(env) {
return envInfo[env].selfUrl;
}
return envInfo[processEnv].selfUrl;
},
getServerUrl: function(env) {
if(env) {
return envInfo[env].serverUrl;
}
return envInfo[processEnv].serverUrl;
},
getRunOnPort: function(env) {
if(env) {
return envInfo[env].runOnPort;
}
return envInfo[processEnv].runOnPort;
},
getProcessEnv: function() {
if(processEnv) {
return processEnv;
}
return 'qa2';
}
}
}();
module.exports = config;