使用电子生成器后 EJS 不渲染

分享于2023年06月29日 ejs electron electron-builder javascript node.js 问答
【问题标题】:EJS not rendering after using electron builder使用电子生成器后 EJS 不渲染
【发布时间】:2023-06-17 00:44:01
【问题描述】:

我正在尝试在我的 electron.js 应用程序中呈现 ejs 文件。我正在使用以下框架加载 ejs 文件:

const ejs = require('ejs')

ejs.renderFile('views/list.ejs', { data: listData }, { root: __dirname }, function (err, str) {
        if (err) {
            console.log(err);
        }
        mainWindow.loadURL('data:text/html;charset=utf-8,' + encodeURI(str));
});

现在这在开发环境中可以正常工作(即使用 electron . 命令),但是当我使用 electron-builder 构建应用程序并运行应用程序时, ejs 不会呈现并且只是一个空白页面未定义的打印。

任何想法为什么会发生这种情况以及如何解决它?

  • 我也有这个问题!你有没有找到解决方案@akshayks?

【解决方案1】:

为了后代:我想通了(ish)

由于某种原因, ejs.renderFile() 在使用 electron-builder 构建应用时需要绝对路径。

所以,你需要这样做: ${path.join(__dirname, ./${consequence}.ejs )}

ejs.renderFile(`${path.join(__dirname, `views/list.ejs`)}`, { data: listData }, { root: __dirname }, 
    function (err, str) {
        if (err) {
            console.log(err);
        }
        mainWindow.loadURL('data:text/html;charset=utf-8,' + encodeURI(str));
    }
);

至于为什么会出现这种情况,我不知道(因为 __dirname 包含在“root”选项参数中……我猜有一个错误。

【讨论】:

  • 我最终在我的项目中使用了 ejs-electron 库,它对我有用,因为我以前的方法只是占用了太多时间来调试。但感谢您解决它。