Ошибка при попытке отправить файл ejs через Express node.js

#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;