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

Posted

技术标签:

【中文标题】使用电子生成器后 EJS 不渲染【英文标题】:EJS not rendering after using electron builder 【发布时间】:2021-02-11 19:03:25 【问题描述】:

我正在尝试在我的 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 库,它对我有用,因为我以前的方法只是占用了太多时间来调试。但感谢您解决它。

以上是关于使用电子生成器后 EJS 不渲染的主要内容,如果未能解决你的问题,请参考以下文章

EJS模板引擎

如何在锚点处渲染 EJS

尝试使用通过EJS传递给客户端的数据绘制多个Google Map标记/信息窗口时,initMap()不是一个函数

nodejs+express+ejs生成项目

ajax请求后重新渲染EJS文件

nodejs学习--express+ejs生成项目