我正在使用 Electron 6.10.0 并使用 React.js。
在我的应用程序中,菜单中有一个添加任务选项,它会创建一个新窗口。
在开发过程中一切正常,但在生产过程中这条线会出现问题。
addWindow.loadURL(isDev ? 'http://localhost:3000/add' : `file://${path.join(__dirname, '../build/index.html')}`);
它加载index.html,通过它加载index.js并呈现router.js。这是 Router.js 中的代码。
<HashRouter>
<Switch>
<Route exact path="/" component={App} />
<Route exact path="/add" component={addWindow} />
</Switch>
</HashRouter>
Run Code Online (Sandbox Code Playgroud)
Mainwindow 工作正常,因为散列是“/”,但对于添加窗口,散列不会更改,并且它会在 addwindow 中再次加载主窗口内容。
生产过程中如何使用路由/路由器,或者有其他方法吗?
提前致谢。
我试图找出用于编译本机模块的electro-builder和electro-rebuild之间的区别。Afaik 有这两个选项来编译我的本机模块依赖项:
电子制造商
“本机应用程序依赖项编译(包括 Yarn 支持)。”
% npm i
% npm run electron-builder install-app-deps
Run Code Online (Sandbox Code Playgroud)
并且有 电子重建
这允许您在 Electron 应用程序中使用原生 Node.js 模块,而无需完全匹配 Node.js 的系统版本(通常情况并非如此,有时甚至不可能)。
% npm run electron-rebuild
Run Code Online (Sandbox Code Playgroud)
两者都会产生我的依赖项的工作二进制文件。我知道electron-builder
它的用途更多,但如果这也可以通过以下electron-rebuild
方式完成,为什么还要存在呢?electron-builder
谢谢!
我很好奇如何管理 Electron 应用程序中的应用程序设置?在管理用户设置方面,我在这里和其他地方找到了一些优秀的资源(例如,在 Electron (Atom Shell) 应用程序中在哪里存储用户设置?),但找不到与管理应用程序设置相关的任何内容。
对我来说,两者之间的区别在于,应用程序设置可能因环境(开发/测试/生产)而异,但对于应用程序的所有用户而言保持不变。它们将包含 API 端点等内容。另一方面,用户设置会根据用户的偏好(如窗口宽度/高度等)而随用户而变化。
到目前为止我做了什么?
我发现了这个优秀的包config
,并开始在我的项目中使用它。根据说明,我创建了一个config
文件夹和一个默认配置文件(稍后我将创建特定于环境的配置文件)。
只要我正在开发应用程序,它就可以正常工作。default.json
应用程序正在从文件夹中正确拾取文件config
并正确应用这些设置。
当我打包应用程序(MSI、DMG 等)时,问题就出现了。我正在electron-builder
为此目的使用包。
package的问题config
在于它在应用程序当前工作目录中查找config
文件夹,并且因为它在安装应用程序的文件夹中找不到它,所以它只是抛出错误。我什至尝试手动将此文件夹复制到我的app
文件夹中(这是 electro-builder 制作包的地方),但这也没有帮助。理想情况下,我想将应用程序设置捆绑在应用程序的 ASAR 文件中,以便它无法被反编译。
我的问题是:
config
使用 NPM 包吗?或者是否有专门针对 Electron 应用程序的该包的替代方案?我有一个用于 win .exe 和安装程序的电子构建文件,但图标不是我的。在我的 main.js 文件中,我有附加图标的代码,但我只能让它在 createWindow 函数内工作。在函数之外,我收到一条错误消息。.exe 将运行并且我得到我的图标,但我这样做时出错;安装程序根本无法工作。我已经尝试过几个教程,但没有一个能解决这个问题。
主文件
const {app, BrowserWindow, Tray} = require('electron')
const path = require('path')
const url = require('url')
let win
function createWindow () {
const appIcon = new Tray('icon/app.png')
win = new BrowserWindow({ width: 1920, height: 1080, icon: 'icon/app.ico' })
console.log(appIcon, win)
win.loadURL(url.format({
pathname: path.join(__dirname, 'app/app.html'),
protocol: 'file:',
slashes: true
}))
win.on('closed', () => {
win = null
})
}
app.on('ready', createWindow)
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
}) …
Run Code Online (Sandbox Code Playgroud) 我有一个电子应用程序,我想为其设置自动更新程序。我按照这篇博文做了一个小演示,经过一些小改动后效果很好。然后我尝试在我的实际项目中实现它,现在出现错误。
GitHub Personal Access Token is not set, neither programmatically, nor using env "GH_TOKEN"
Run Code Online (Sandbox Code Playgroud)
我已经有了 electro-builder.yml 文件,我什至尝试设置 GT_TOKEN anv 变量,但它仍然抛出相同的错误。
下午好。
我想知道是否可以将config.json文件添加到 Vue CLI 3 项目中,该文件可以在开发和生产期间在运行时读取。
在config.json文件将包含一些字符串的应用程序可以动态地使用变化的内容,如显示给用户和打印机的IP地址的视频文件。
// config.json
{
"brand": "eat",
"printerIP": "192.168.0.4"
}
Run Code Online (Sandbox Code Playgroud)
我试图将文件放在 assets 文件夹和 public 文件夹中。我尝试使用 import 和 require 语句将它导入到App.vue的脚本 lang="ts"元素中。我正在使用 vue-property-decorator。
// App.vue (<script lang="ts">)
const config = require('../public/config.json');
OR
import config from '../public/config.json';
Run Code Online (Sandbox Code Playgroud)
我已经通过使用 axios 像 API 一样处理它并简单地使用例如config.brand访问变量来访问这些值。
// App.vue (<script lang="ts">)
import axios from 'axios';
@Provide() private brand: string = "";
axios
.get('.config.json')
.then(response => {
this.brand = response.data.brand;
})
OR
this.brand = …
Run Code Online (Sandbox Code Playgroud) 我在他们的网站/文档中找不到有关此内容的参考。我需要将其更改为另一个端口,目前它卡在 3000。
这是我创建电子项目的方法electron-forge
yarn create electron-app my-new-app --template=typescript
Run Code Online (Sandbox Code Playgroud)
每当端口 3000 中有另一个服务时。它会抛出错误:
listen EADDRINUSE :::3000
Error: listen EADDRINUSE :::3000
at Server.setupListenHandle [as _listen2] (net.js:1360:14)
Run Code Online (Sandbox Code Playgroud)
我的webpack.main.config.js
文件:
const path = require('path');
module.exports = {
entry: './src/index.ts',
// Put your normal webpack config below here
module: {
rules: require('./webpack.rules')
},
resolve: {
extensions: ['.js', '.ts', '.jsx', '.tsx', '.css', '.json']
},
devServer: {
contentBase: path.join(__dirname, 'dist'),
compress: true,
port: 9000
}
};
Run Code Online (Sandbox Code Playgroud) 早上好,
我在 Vue JS 中创建了一个程序,它与我在 main.js 文件中创建的 API 连接以执行系统命令。
我遇到的问题是,在使用电子编译生产时,出现以下错误:
我使用命令 npm run electron: build
当我使用 npm run electron:serve 工作时没有问题
任何人都知道为什么会出现错误以及如何修复它?谢谢
我正在使用 vue2-electron builder 开发一个项目。但是当我运行这段代码时,它没有显示。
错误是;
(node:10500) ExtensionLoadWarning: Warnings loading extension at C:\Users\Dell\AppData\Roaming\project\extensions\nhdogjmejiglipccpnnnanhblpccpnnnanhbledajbpd:
Unrecognized manifest key 'browser_action'.
Unrecognized manifest key 'update_url'.
Permission 'contextMenus' is unknown or URL pattern is malformed.
Cannot load extension with file or directory name _metadata. Filenames starting with "_" are reserved for use by the system.
(Use `electron --trace-warnings ...` to show where the warning was created)
Run Code Online (Sandbox Code Playgroud)
我的background.js是;
'use strict'
import { app, protocol, BrowserWindow } from 'electron'
const path = require('path')
import { createProtocol } from …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种简单的方法来从 Linux 机器构建适用于 macOS 的电子应用程序。
\n不幸的是,该electron-builder -m
命令不起作用,以下是该命令的完整输出:
electron-builder -m \n \xe2\x80\xa2 electron-builder version=22.14.13 os=5.11.0-49-generic\n \xe2\x80\xa2 loaded configuration file=package.json ("build" field)\n \xe2\x80\xa2 writing effective config file=dist/builder-effective-config.yaml\n\xe2\xa8\xaf Cannot find module \'dmg-license\'\nRequire stack:\n- /home/myUser/.nvm/versions/node/v16.13.0/lib/node_modules/electron-builder/node_modules/dmg-builder/out/dmgLicense.js\n- /home/myUser/.nvm/versions/node/v16.13.0/lib/node_modules/electron-builder/node_modules/dmg-builder/out/dmg.js\n- /home/myUser/.nvm/versions/node/v16.13.0/lib/node_modules/electron-builder/node_modules/dmg-builder/out/dmgUtil.js\n- /home/myUser/.nvm/versions/node/v16.13.0/lib/node_modules/electron-builder/node_modules/app-builder-lib/out/macPackager.js\n- /home/myUser/.nvm/versions/node/v16.13.0/lib/node_modules/electron-builder/node_modules/app-builder-lib/out/packager.js\n- /home/myUser/.nvm/versions/node/v16.13.0/lib/node_modules/electron-builder/node_modules/app-builder-lib/out/index.js\n- /home/myUser/.nvm/versions/node/v16.13.0/lib/node_modules/electron-builder/out/builder.js\n- /home/myUser/.nvm/versions/node/v16.13.0/lib/node_modules/electron-builder/out/cli/cli.js\n- /home/myUser/.nvm/versions/node/v16.13.0/lib/node_modules/electron-builder/cli.js failedTask=build stackTrace=Error: Cannot find module \'dmg-license\'\n
Run Code Online (Sandbox Code Playgroud)\n我尝试安装依赖项,但它只能安装在 macOS 上...
\n我也尝试过安装不同的版本,包括20.37.*
、22.11.7
、@latest
( 22.14.13
) 和@next
有没有其他方法可以为 macOS 构建应用程序(我使用的程序是出于私人目的,因此如果需要额外的用户步骤来安装也没关系)?
\n或者有什么方法可以解决这个依赖问题?
\nelectron-builder ×10
electron ×8
javascript ×5
node.js ×4
vue.js ×3
reactjs ×2
macos ×1
npm ×1
typescript ×1
vue-cli-3 ×1