【发布时间】:2020-11-01 01:36:54
【问题描述】:
我已经构建了一个在 Chrome 上运行良好的 React 应用程序。现在我想把它转换成一个电子应用程序。位于/public目录下的资产(图片、图标、JSON文件)无法在电子应用中加载。
加载这些文件时浏览器控制台显示错误:Failed to load resource: net::ERR_FILE_NOT_FOUND.
当我将公共目录中的资产图片直接插入到生成的 index.html 文件中时,例如
<img src="pic.png" alt=" pic"/>
它可以工作,但是从 react 组件中以相同的方式加载它是行不通的。资产文件正在从根目录加载(例如 file://pic.png)
这是项目结构:
package.json:
"homepage": "./",
"main": "src/electron-starter.js",
"build": {
"appId": "com.myapp",
"productName": "App",
"files": [
"build/**/*",
"src/electron-starter.js"
],
"directories": {
"buildResources": "public"
},
"win": {
"target": "NSIS"
},
"linux": {
"target": [
"AppImage",
"deb"
],
"category": "Audio"
},
"dmg": {
"contents": [
{
"x": 110,
"y": 150
},
{
"x": 240,
"y": 150,
"type": "link",
"path": "/Applications"
}
]
}
}
electron-starter.js 中的createWindow 函数:
function createWindow () {
const mainWindow = new BrowserWindow({
width: 1200,
height: 700,
webPreferences: {
nodeIntegration: true
}
})
if (process.env.ELECTRON_START_URL) {
mainWindow.loadURL(process.env.ELECTRON_START_URL);
} else {
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, '../build/index.html'),
protocol: 'file',
slashes: true
}))
}
mainWindow.webContents.openDevTools()
}
提前感谢您的帮助!
【问题讨论】: