更新 package.json 中的 better-sqlite3 套件版本至 9.2.2,升級 electron 至 28.2.7,並調整 electron-rebuild 的執行方式為 npx。修正 app.js 和 window.js 中的程式碼格式,並啟用 @electron/remote 的功能。

This commit is contained in:
philipz 2025-05-09 14:22:38 +08:00
parent 7488da3829
commit 79e40bd06c
3 changed files with 27 additions and 21 deletions

View File

@ -21,7 +21,7 @@
"qstart-electron": "npm run qswitch-electron && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 .", "qstart-electron": "npm run qswitch-electron && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 .",
"start-test-server": "npm run qswitch-server; rm -rf ./data-test; cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 node src/www.js", "start-test-server": "npm run qswitch-server; rm -rf ./data-test; cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 node src/www.js",
"switch-server": "rm -rf ./node_modules/better-sqlite3 && npm install", "switch-server": "rm -rf ./node_modules/better-sqlite3 && npm install",
"switch-electron": "./node_modules/.bin/electron-rebuild", "switch-electron": "npx electron-rebuild",
"qswitch-server": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-server-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node", "qswitch-server": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-server-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node",
"qswitch-electron": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-desktop-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node", "qswitch-electron": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-desktop-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node",
"build-backend-docs": "rm -rf ./docs/backend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/becca/entities/*.js src/services/backend_script_api.js src/services/sql.js", "build-backend-docs": "rm -rf ./docs/backend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/becca/entities/*.js src/services/backend_script_api.js src/services/sql.js",
@ -31,7 +31,8 @@
"test-jasmine": "TRILIUM_DATA_DIR=~/trilium/data-test jasmine", "test-jasmine": "TRILIUM_DATA_DIR=~/trilium/data-test jasmine",
"test-es6": "node -r esm spec-es6/attribute_parser.spec.js ", "test-es6": "node -r esm spec-es6/attribute_parser.spec.js ",
"test": "npm run test-jasmine && npm run test-es6", "test": "npm run test-jasmine && npm run test-es6",
"postinstall": "rimraf ./node_modules/canvas" "postinstall": "rimraf ./node_modules/canvas",
"electron-rebuild": "npx electron-rebuild"
}, },
"dependencies": { "dependencies": {
"@braintree/sanitize-url": "6.0.4", "@braintree/sanitize-url": "6.0.4",
@ -40,7 +41,7 @@
"archiver": "7.0.0", "archiver": "7.0.0",
"async-mutex": "0.4.1", "async-mutex": "0.4.1",
"axios": "1.6.7", "axios": "1.6.7",
"better-sqlite3": "8.7.0", "better-sqlite3": "9.2.2",
"boxicons": "2.1.4", "boxicons": "2.1.4",
"chokidar": "3.6.0", "chokidar": "3.6.0",
"cls-hooked": "4.2.2", "cls-hooked": "4.2.2",
@ -109,11 +110,11 @@
"yauzl": "3.1.2" "yauzl": "3.1.2"
}, },
"devDependencies": { "devDependencies": {
"@electron/rebuild": "^3.6.2",
"cross-env": "7.0.3", "cross-env": "7.0.3",
"electron": "25.9.8", "electron": "28.2.7",
"electron-builder": "24.13.3", "electron-builder": "24.13.3",
"electron-packager": "17.1.2", "electron-packager": "17.1.2",
"electron-rebuild": "3.2.9",
"esm": "3.2.25", "esm": "3.2.25",
"jasmine": "5.1.0", "jasmine": "5.1.0",
"jsdoc": "4.0.2", "jsdoc": "4.0.2",

View File

@ -54,7 +54,8 @@ require('./services/consistency_checks.js');
require('./services/scheduler.js'); require('./services/scheduler.js');
if (utils.isElectron()) { if (utils.isElectron()) {
require('@electron/remote/main').initialize(); const { initialize } = require('@electron/remote/main');
initialize();
} }
module.exports = app; module.exports = app;

View File

@ -8,6 +8,7 @@ const sqlInit = require('./sql_init.js');
const cls = require('./cls.js'); const cls = require('./cls.js');
const keyboardActionsService = require('./keyboard_actions.js'); const keyboardActionsService = require('./keyboard_actions.js');
const { ipcMain } = require('electron'); const { ipcMain } = require('electron');
const { enable: enableRemote } = require('@electron/remote/main');
// Prevent the window being garbage collected // Prevent the window being garbage collected
/** @type {Electron.BrowserWindow} */ /** @type {Electron.BrowserWindow} */
@ -25,10 +26,10 @@ async function createExtraWindow(extraWindowHash) {
height: 800, height: 800,
title: 'Trilium Notes', title: 'Trilium Notes',
webPreferences: { webPreferences: {
enableRemoteModule: true,
nodeIntegration: true, nodeIntegration: true,
contextIsolation: false, contextIsolation: false,
spellcheck: spellcheckEnabled spellcheck: spellcheckEnabled,
webviewTag: true
}, },
frame: optionService.getOptionBool('nativeTitleBarVisible'), frame: optionService.getOptionBool('nativeTitleBarVisible'),
icon: getIcon() icon: getIcon()
@ -64,7 +65,6 @@ async function createMainWindow(app) {
height: mainWindowState.height, height: mainWindowState.height,
title: 'Trilium Notes', title: 'Trilium Notes',
webPreferences: { webPreferences: {
enableRemoteModule: true,
nodeIntegration: true, nodeIntegration: true,
contextIsolation: false, contextIsolation: false,
spellcheck: spellcheckEnabled, spellcheck: spellcheckEnabled,
@ -96,9 +96,9 @@ async function createMainWindow(app) {
} }
function configureWebContents(webContents, spellcheckEnabled) { function configureWebContents(webContents, spellcheckEnabled) {
require("@electron/remote/main").enable(webContents); enableRemote(webContents);
mainWindow.webContents.setWindowOpenHandler((details) => { webContents.setWindowOpenHandler((details) => {
require("electron").shell.openExternal(details.url); require("electron").shell.openExternal(details.url);
return { action: 'deny' } return { action: 'deny' }
}); });
@ -136,13 +136,17 @@ async function createSetupWindow() {
icon: getIcon(), icon: getIcon(),
webPreferences: { webPreferences: {
// necessary for e.g. utils.isElectron() // necessary for e.g. utils.isElectron()
nodeIntegration: true nodeIntegration: true,
contextIsolation: false
} }
}); });
setupWindow.setMenuBarVisibility(false); setupWindow.setMenuBarVisibility(false);
setupWindow.loadURL(`http://127.0.0.1:${port}`); setupWindow.loadURL(`http://127.0.0.1:${port}`);
setupWindow.on('closed', () => setupWindow = null); setupWindow.on('closed', () => setupWindow = null);
// Enable remote for setup window
configureWebContents(setupWindow.webContents, false);
} }
function closeSetupWindow() { function closeSetupWindow() {