[英]Express Electron Cannot Require Local Js Files
在標記為重復之前,我已經搜索了很多,但找不到我需要的答案。
我在使用 express 和 electron 時遇到了一些問題。當我運行npm start
時一切正常( electron.
中的啟動腳本是package.json
)。 使用electron-builder
electron 后出現問題。 它為 windows x-64 構建項目,並在 dist 文件夾中生成.exe
文件。 在我想要運行可執行應用程序之前,一切看起來都很好。 出現此對話框:
我做了很多搜索,但找不到問題所在。 實際問題是 electron 在構建后無法要求本地 js 文件。 我在構建過程中嘗試了 asar true 和 false。
這是我的項目樹:
app
├── node_modules
│ └── ...
├── Controllers
│ ├── baseController.js
│ └── homeController.js
├── Database
│ ├── journals.json
│ └── users.json
├── Models
│ ├── Journal.js
│ ├── User.js
│ └── index.js
├── Repository
│ ├── motor
│ | ├── generator.js
│ | └── index.js
│ ├── core
│ | └── index.js
│ ├── init.js
│ └── index.js
├── Views
│ └── index.html
├── www
│ └── assets
│ └── images
│ └── ...
├── app.js
├── package.json
├── package-lock.json
├── startup.js
└── server.js
這是我的app.js
:
const path = require('path');
const server = require(path.join(__dirname, 'server'));
const port = 7970;
const electron = require('electron');
const url = require('url');
const { app, BrowserWindow, Menu } = electron;
let index;
// App Ready
app.allowRendererProcessReuse = false;
app.on('ready', function () {
index = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
nodeIntegrationInWorker: true,
nodeIntegrationInSubFrames: true,
contextIsolation: false,
enableRemoteModule: true
},
frame: true,
minimizable: false,
maximizable: false,
fullscreen: false,
resizable: false,
movable: true
});
index.loadURL(url.format({
pathname: path.join("localhost:" + port),
protocol: 'http:',
slashes: true
}));
Menu.setApplicationMenu(null);
});
這是startup.js
,錯誤實際上是在堆棧跟蹤中開始的:
const path = require('path');
var express = require('express');
var router = express.Router();
var controllers = require(path.join(__dirname, '/Controllers/baseController'));
router.get('/', controllers.home.index)
module.exports = router;
我已經嘗試過 require 和require("./whatever")
之類的相對路徑,但沒有什么不同。
Electron 可能不會隨安裝 package 一起運送您的文件。嘗試將extraFiles字段添加到您的package.json
因此,在您的package.json
和build
字段中,添加以下內容:
build:{
"appId":"your.product.id",
...
"extraFiles":[
{
"from":"Controllers",
"to":"resources/app/Controllers",
"filter":["**/*"]
},
{
"from":"Database",
"to":"resources/app/Database",
"filter":["**/*"]
},
{
"from":"Models",
"to":"resources/app/Models",
"filter":["**/*"]
},
{
"from":"Repository",
"to":"resources/app/Repository",
"filter":["**/*"]
},
{
"from":"Views",
"to":"resources/app/Views",
"filter":["**/*"]
},
{/** You can add more if you need*/}
]
}
Electron,默認情況下,在構建時忽略所有 devDependencies 和“新”文件。 extraFiles字段可防止 electron-builder 忽略應用程序執行所必需的文件。 它實際上將位於from
字段中的文件to
字段中的路徑中。 filter
用於在必要時使用擴展名或內部目錄保留一些文件。
extraFiles
將默認路徑作為您應用程序的根目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.