我正在尝试在我的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
不会呈现,只是一个未定义打印的空白页面。
你知道为什么会发生这种情况,以及如何解决吗?
发布于 2021-08-30 01:48:21
给后人的:我想通了(大概)
由于某些原因,当应用程序使用electron-builder
构建时,ejs.renderFile()
需要一个绝对路径。
因此,您需要这样做:${path.join(__dirname,
./${.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被包含在“根”选项参数中……我猜这是一个bug。
https://stackoverflow.com/questions/64589372
复制相似问题