腾讯云视立方Electron 相关问题

安装相关

trtc-electron-sdk 是否兼容官方 Electron v12.0.1 版本?

兼容的,trtc-electron-sdk 没有特别依赖 elecron 自身的 SDK,所以没有相关的版本依赖。

Electron 下载慢甚至卡住不动?

当开始下载tmp-3320-1-SHASUMS256.txt-6.1.9文件或其它文件时,可能会特别慢,甚至在辛苦等待了很长时间后,等到的却是 npm 的 Timeout 错误:

 

Downloading tmp-3320-1-SHASUMS256.txt-6.1.9

[=> ] 1.0% of 5.56 kB (0 B/s)

解决方案 A:如果您是在家中办公,可以切换到国内的 npm 镜像。

 

# 指定 npm 国内镜像

$ npm config set registry=https://registry.npm.taobao.org/

# 指定 Electron 的国内镜像地址

$ npm config set ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/

$ npm install

解决方案 B:如果您是在公司办公,那么您公司的网络管理员可能已经设置了代理,需要确认 npm 的 proxy 配置是否指向了公司的代理服务器,以及是否配置了环境变量ELECTRON_GET_USE_PROXY,如均无配置,请按以下步骤执行。

1.1 设置 npm 代理 :npm config set all_proxy=[您的代理地址]

1.2 配置ELECTRON_GET_USE_PROXY环境变量,这样 Electron 的安装脚本就会通过 npm 的代理下载。

解决方案 C:如果您是 Mac 环境。

 

$ export ELECTRON_GET_USE_PROXY=true

解决方案 D:如果您是 Windows 环境。

1.1 右键单击计算机 > 属性 > 高级系统设置 > 环境变量

1.2 按下图操作设置环境变量 ELECTRON_GET_USE_PROXY ,然后执行npm installnpm install --proxy=[您的代理地址]

下载 Electron 时出现 404 错误?

在终端中输入如下指令:

 

$ npm config set electron_custom_dir 8.1.1 # 根据版本号来决定

运行相关

Windows 32 系统运行报错Error:resource\trtc_electron_sdk.node is not a valid Win32 application, 提示需要 32 位的 trtc_electron_sdk.node?

解决方法

1. 进入到工程目录下的 trtc-electron-sdk 库目录下(xxx/node_modules/trtc-electron-sdk)。 执行:

 

npm run install -- arch=ia32

2. 下载完 32 位的trtc_electron_sdk.node后,重新对项目进行打包。

vscode terminal 启动 Electron Demo,进入房间后白屏?

vscode 需有摄像头权限, 可采用如下方式进行权限添加。

 

cd ~/Library/Application\ Support/com.apple.TCC/

cp TCC.db TCC.db.bak

sqlite3 TCC.db # sqlite> prompt appears.

# for Mojave, Catalina

INSERT into access VALUES('kTCCServiceCamera',"com.microsoft.VSCode",0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);

# for BigSur

INSERT into access VALUES('kTCCServiceCamera',"com.microsoft.VSCode",0,1,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);

跑 Demo 抛出空指针未定义的错误:“cannot read property 'dlopen' of undefined”

解决方法: Electron 12 版本上下文隔离默认启用,可设置 contextIsolation 为 false。

 

let win = new BrowserWindow({

width: 1366,

height: 1024,

minWidth: 800,

minHeight: 600,

webPreferences: {

nodeIntegration: true,

contextIsolation: false

},

});

Electron 多次出现重新进房问题?

需要具体 case 进行分析,大致原因如下:

客户端网络状态不好(断网会触发重进房)。

连着发两次进房信令也会重进房的。

有可能是设备负载过高,导致解码失败的重进房。

同一个 UID 多端登录互踢导致的重进房。

终端出现提示“Electron failed to install correctly”?

当看似安装完成,运行项目时,终端上出现以下错误:

 

Error: Electron failed to install correctly, please delete node_modules/electron and try installing again

按照如下三个步骤进行手动下载

1. 执行npm config get cache查看缓存目录。

2. 手动下载 Electron ,并放到缓存目录中。

3. 重新执行npm install

调用摄像头或麦克风时直接崩溃?

使用 vscode 终端启动项目,当 trtc-electron-sdk 启动摄像头和麦克风时,程序直接崩溃:

解决方案 A:使用有授权的终端运行项目。

解决方案 B:给 vscode 授权:在系统偏好设置 > 安全与隐私 中允许 vscode 的授权。

解决方案 C:按以下步骤关闭保护机制:

1.1 重启系统,按住 command + r 键,直到系统进入保护模式。

1.2 打开 terminal 输入csrutil disable禁用保护机制。

1.3 重启,正常进入系统,此时就可以使用 vscode 的终端启动项目了。

1.4 如需重新启动保护机制,只需要在第二步中执行csrutil enable

Electron 在控制台中报错“xx is not defined”?

当运行项目时,Electron 在控制台中提示xx is not defined,其中xx指代 node 模块。例如:

 

Uncaught ReferenceError: require is not defined

在 Electron 的main.js文件中将nodeIntegration配置项改成 true:

 

let win = new BrowserWindow({

width: 1366,

height: 1024,

webPreferences: {

nodeIntegration: true, // 请将此项设置为 true

},

});

Mac 下,打包安装后,运行时白屏、崩溃问题

在 Mac OS 10.4 及以后版本,运行安装包时,如果获取不到 摄像头、麦克风、屏幕录制 权限,程序会因为没有这些硬件的访问权限,在进入 TRTC 房间后直接白屏或者崩溃。解决方法如下:

1. 添加 entitlements.mac.plist 文件,文件内容如下,相关配置的具体含义,请参见 苹果开发者网站。

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>com.apple.security.cs.allow-unsigned-executable-memory</key>

<true></true>

<key>com.apple.security.cs.allow-jit</key>

<true></true>

<key>com.apple.security.cs.allow-dyld-environment-variables</key>

<true></true>

<key>com.apple.security.device.audio-input</key>

<true></true>

<key>com.apple.security.device.camera</key>

<true></true>

</dict>

</plist>

2. 使用 electron-builder 打包时,需要将 entitlements.mac.plist 文件路径配置到 electron-builder 打包配置中。参考代码如下,注意"entitlements""entitlementsInherit" 两个配置项,"hardenedRuntime"需要配置为 true,配置项含义请参见 electron-builder官网。

 

{

"build": {

"mac": {

"extraFiles": [

{

"from": "node_modules/trtc-electron-sdk/build/Release/trtc_electron_sdk.node",

"to": "./Resources"

}

],

"type": "distribution",

"hardenedRuntime": true,

"entitlements": "assets/entitlements.mac.plist",

"entitlementsInherit": "assets/entitlements.mac.plist",

"gatekeeperAssess": false,

"target": [

"dmg"

]

},

}

}

3. Mac OS 12.1 及以上版本,仅使用以上配置,已不足以申请 麦克风、摄像头权限,需要借助 Electron API 的 systemPreferences.askForMediaAccess() 接口,在主进程中,主动申请一次摄像头、麦克风权限。参考代码如下。systemPreferences.getMediaAccessStatus() 接口可以检测 麦克风、摄像头、屏幕录制权限,但 systemPreferences.askForMediaAccess() 接口只能申请 摄像头 和 麦克风权限。

 

async checkAndApplyDeviceAccessPrivilege() {

const cameraPrivilege = systemPreferences.getMediaAccessStatus('camera');

console.log(

`checkAndApplyDeviceAccessPrivilege before apply cameraPrivilege: ${cameraPrivilege}`

);

if (cameraPrivilege !== 'granted') {

await systemPreferences.askForMediaAccess('camera');

}

const micPrivilege = systemPreferences.getMediaAccessStatus('microphone');

console.log(

`checkAndApplyDeviceAccessPrivilege before apply micPrivilege: ${micPrivilege}`

);

if (micPrivilege !== 'granted') {

await systemPreferences.askForMediaAccess('microphone');

}

const screenPrivilege = systemPreferences.getMediaAccessStatus('screen');

console.log(

`checkAndApplyDeviceAccessPrivilege before apply screenPrivilege: ${screenPrivilege}`

);

}

4. 更多崩溃问题处理方法,请参阅 Electron 应用崩溃问题排查与解决方法。

打包相关

.node 模块的加载问题?

报错信息

打包编译出的程序在运行时,在控制台中看到类似的报错信息:

NodeRTCCloud is not a constructor

Cannot open xxx/trtc_electron_sdk.node或者The specified module could not be found

dlopen(xxx/trtc_electron_sdk.node, 1): image not found

解决方法

出现类似上述的信息,说明 trtc_electron_sdk.node 模块没有被正确的打包到程序中,可按照以下步骤进行处理。

1. 安装native-ext-loader

 

$ npm i native-ext-loader -D

2. 修改 webpack 配置。

2.1 使webpack.config.js在构建时可以接收名为--target_platform的命令行参数,以使代码构建过程按不同的目标平台特点正确打包,在 module.exports之前添加以下代码:

 

const os = require('os');

// 如果不传 target_platform 参数,程序会默认按当前平台类型进行打包

const targetPlatform = (function(){

let target = os.platform();

for (let i=0; i<process.argv.length; i++) {

if (process.argv[i].includes('--target_platform=')) {

target = process.argv[i].replace('--target_platform=', '');

break;

}

}

// win32 统一表示 Windows 平台,包含 32 位和 64 位。darwin 表示 Mac 平台

if (!['win32', 'darwin'].includes) target = os.platform();

return target;

})();

2.2 添加以下 rules 配置:

 

module: {

rules: [

{

test: /\.node$/,

loader: 'native-ext-loader',

options: {

rewritePath: targetPlatform === 'win32' ? './resources' : '../Resources'

}

},

]

}

注意:

使用 vue-cli 创建的项目,webpack 配置存放在 vue.config.js 文件中的 configureWebpack 选项中。

使用 create-react-app 创建的项目,webpack 配置文件为 [项目目录]/node_modules/react-scripts/config/webpack.config.js

3. 配置 packages.json 文件,添加打包配置和构建脚本。

3.1 添加electron-builder打包配置(注意大小写):

 

"build": {

"省略": "...",

"win": {

"extraFiles": [

{

"from": "node_modules/trtc-electron-sdk/build/Release/",

"to": "./resources",

"filter": ["**/*"]

}

]

},

"mac": {

"extraFiles": [

{

"from": "node_modules/trtc-electron-sdk/build/Release/trtc_electron_sdk.node",

"to": "./Resources"

}

]

},

"directories": {

"output": "./bin"

}

},

3.2 添加 scripts 构建、打包脚本create-react-app项目请参考以下配置:

 

"scripts": {

"build:mac": "react-scripts build --target_platform=darwin",

"build:win": "react-scripts build --target_platform=win32",

"compile:mac": "node_modules/.bin/electron-builder --mac",

"compile:win64": "node_modules/.bin/electron-builder --win --x64",

"pack:mac": "npm run build:mac && npm run compile:mac",

"pack:win64": "npm run build:win && npm run compile:win64"

}

3.3 vue-cli项目请参考以下配置:

 

"scripts": {

"build:mac": "vue-cli-service build --target_platform=darwin",

"build:win": "vue-cli-service build --target_platform=win32",

"compile:mac": "node_modules/.bin/electron-builder --mac",

"compile:win64": "node_modules/.bin/electron-builder --win --x64",

"pack:mac": "npm run build:mac && npm run compile:mac",

"pack:win64": "npm run build:win && npm run compile:win64"

}

找不到入口文件?

使用create-react-app创建的项目,使用electron-builder打包时可能会遇到此问题:

 

$ node_modules\.bin\electron-builder.cmd

• electron-builder version=22.6.0 os=6.1.7601

• loaded configuration file=package.json ("build" field)

• public/electron.js not found. Please see https://medium.com/@kitze/%EF%B8%8F-from-react-to-an-electron-app-ready-for-production-a0468ecb1da3

• loaded parent configuration preset=react-cra

其中public/electron.js not found指的就是无法找到入口文件。

解决方案

1. 移动并重命名入口文件:

 

$ cd [项目目录]

$ mv main.electron.js ./public/electron.js

2. 修改 pacakge.json 文件:

 

{

"main": "public/electron.js",

"省略": "..."

}

在执行打包时,出现 fs-extra 模块的语法错误?

 

[项目目录]\node_modules\electron-builder\node_modules\fs-extra\lib\empty\index.js:33

} catch {

^

SyntaxError: Unexpected token {

at new Script (vm.js:51:7)

可以升级到最新的 node ,具体请参见 Node.js 官方网站。

Mac 下如何构建 X64 和 ARM64 双架构包?

TRTC Electron SDK 从 10.6.403 版本开始,默认支持 Mac 下构建 X64 和 ARM64 双架构包,只需要修改一下 electron-builder 和构建工具 Webpack 或者 Vite 配置即可。详细配置请参见 TRTC Electron SDK: Mac 下构建双架构包。

支持双架构打包后,如果不修改配置,则默认构建单架构应用包,架构类型与构建机器 CPU 类型相同。

说明:

更多 Electron 相关问题请关注 Electron 常见问题收录 和 Electron 常见问题收录II,我们将持续更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/446294.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c语言——指针详解(4)】

文章目录 一、回调函数是什么&#xff1f;二、qsort的使⽤1、使⽤qsort函数排序整型数据2、使⽤qsort排序结构数据 三、qsort函数的模拟实现 作者主页 一、回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xf…

【进阶OpenCV】 (12)--人脸检测识别

文章目录 人脸识别一、获取分类器二、代码实现1. 图片预处理2. 加载人脸检测分类器3. 检测人脸4. 标注人脸 总结 人脸识别 要实现人脸识别首先要判断当前图像中是否出现了人脸&#xff0c;这就是人脸检测。只有检测到图像中出现了人脸&#xff0c;才能据此判断这个人到底是谁。…

模拟电子电路基础(常见半导体+multisim学习1)

目录 1.半导体的基础 1.1.半导体基础知识 1.1.1本征半导体 1.1.2杂质半导体 1.1.3PN结 1.2半导体二极管 1.2.1半导体二极管的几种常见结构 1.2.2二极管的伏安特性曲线 1.2.3二极管的主要参数 1.2.4二级管的等效电路 1.2.5稳压二极管 1.2.其他类型二极管 2.multisim的…

计算机网络:数据链路层 —— PPP 点对点协议

文章目录 PPP 帧PPP帧的格式PPP帧的透明传输面向字节的异步链路面向比特的同步链路 PPP帧的差错检测 PPP 的工作状态 点对点协议&#xff08;Point-to-Point Protocol&#xff0c;PPP&#xff09;是目前使用最广泛的点对点数据链路层协议&#xff0c;用于在两个节点之间进行数据…

线性代数 行列式

一、行列式 1、定义 一个数学概念&#xff0c;主要用于 线性代数中&#xff0c;它是一个可以从方阵&#xff08;即行数和列数相等的矩阵&#xff09;形成的一个标量&#xff08;即一个单一的数值&#xff09; 2、二阶行列式 &#xff0c;像这样将一个式子收缩称为一个 2*2 的…

西门子828d的plc一些信息记录

1、虽然是200的plc但是引入了DB的形式替代原来的V存储区。 2、用户自定义DB块范围&#xff0c;DB9000-DB9063,共64个DB块。 可用地址范围如上图 机床MCP483面板地址表&#xff0c;其它类型的面板地址自己在828d简明调试手册里查看。 如何上载828d的plc程序&#xff1a; 1.通…

Chainlit集成Dashscope实现语音交互网页对话AI应用

前言 本篇文章讲解和实战&#xff0c;如何使用Chainlit集成Dashscope实现语音交互网页对话AI应用。实现方案是对接阿里云提供的语音识别SenseVoice大模型接口和语音合成CosyVoice大模型接口使用。针对SenseVoice大模型和CosyVoice大模型&#xff0c;阿里巴巴在github提供的有开…

数据结构之红黑树实现(全)

一、红黑树 红黑树是一种自平衡的二叉搜索树&#xff0c;它通过约束节点的颜色和结构来保持平衡。红黑树是由 Rudolf Bayer 在1972年发明的&#xff0c;被认为是一种优秀的平衡树结构&#xff0c;广泛应用于各种数据结构和算法中。 1.红黑树的性质 1. 每个结点是红的或者黑的…

Mac 备忘录妙用

之前使用 Windows 的过程中&#xff0c;最痛苦的事是没有一款可以满足我快速进行记录的应用 基本都得先打开该笔记软件&#xff0c;然后创建新笔记&#xff0c;最后才能输入&#xff0c;这么多步骤太麻烦了 在切换到 MacOS 之后&#xff0c;让我惊喜的就是自带的备忘录&#…

android——自定义控件(不停变化的textview、开关switch、动画效果的打勾)

一、从开始数字到结束数字&#xff0c;不断变化 import android.animation.TypeEvaluator; import android.animation.ValueAnimator; import android.content.Context; import android.util.AttributeSet; import android.view.animation.AccelerateDecelerateInterpolator;i…

设计模式-原型模式(克隆、Clone、Prototype)

原型模式&#xff08;克隆、Clone、Prototype&#xff09;是一种创建型设计模式&#xff0c; 使你能够复制已有对象&#xff0c; 而又无需使代码依赖它们所属的类。 问题 譬如美国研制了一种特效药&#xff0c;而且还在专利保护器内&#xff0c;而印度制药公司看中了&#xff0…

2024 第一次周赛

A: 题目大意 骑士每连续 i 天每天会得到 i 个金币&#xff0c;&#xff08;i 1&#xff0c; 2&#xff0c; 3 &#xff0c; …&#xff09;,那么展开看每一天可以得到的金币数&#xff1a;1 2 2 3 3 3 4 4 4 5 5 5 5 5 … 可以发现就是1个1 &#xff0c;2个2, 3个3…,那么我…

Flutter 3.24 发布:GPU模块及多视图嵌入功能

Flutter 3.24 发布&#xff1a;GPU模块及多视图嵌入功能 Flutter 3.24 带来了许多新功能和改进&#xff0c;让开发应用程序变得更加容易和有趣。这个版本重点展示了 Flutter GPU 的预览功能&#xff0c;让应用程序可以直接使用高级图形和 3D 场景功能。 此外&#xff0c;网页…

win软件 超强的本地视频 图片去水印 动态水印!

AI视频图片去水印 HitPaw Watermark Remover 电脑软件&#xff0c;内涵安装教程&#xff0c;以后看到有水印的视频不怕啦&#xff0c;用这个就行了&#xff0c;可以去除动态水印&#xff01; 【下载】 https://pan.quark.cn/s/1ba6f088f0b2 【应用名称】:HitPaw Watermark R…

ARIMA 模型初体验 —— 预测股票数据

第 1 步&#xff0c;从 twelvedata 上获取苹果 11 号 15:30 到 16:00 的 OHLC、成交量 数据。 第 2 步&#xff0c;编写 Python 代码&#xff08;实际上可以用 R 语言&#xff0c;R 语言从语言的级别对分析预测提供了支持&#xff0c;而 Python 需要第三方库&#xff09;。 …

C++ day04(友元 friend、运算符重载、String字符串)

目录 【1】友元 friend 1》概念 2》友元函数 3》友元类 4》友元成员函数 【2】运算符重载 1》概念 2》友元函数运算符重载 ​编辑 3》成员函数运算符重载 4》赋值运算符与类型转换运算符重载 5》注意事项 【3】String 字符串类 【1】友元 friend 1》概念 定义&#x…

BUUCTF-greatescape1

发现有ftp包和tcp包居多 下载解压是个流量包&#xff0c;使用wiresharh打开&#xff0c;CTRLF&#xff0c;按下图搜索ftp tcp18流发现ssc.key 传送&#xff0c;在19流发现key内容 复制保存为ssc.key, 加载key解密tls&#xff0c;再追踪tls流可得flag INS{OkThatWasWay2Easy} …

多元线性回归:机器学习中的经典模型探讨

引言 多元线性回归是统计学和机器学习中广泛应用的一种回归分析方法。它通过分析多个自变量与因变量之间的关系&#xff0c;帮助我们理解和预测数据的行为。本文将深入探讨多元线性回归的理论背景、数学原理、模型构建、技术细节及其实际应用。 一、多元线性回归的背景与发展…

基于Java的旅游网站管理系统—计算机毕业设计源码39235

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对旅游网站等问题&#xff0c;对旅游网站进行…

一区大黄蜂!人工蜂群算法优化!ABC-CNN-LSTM-MATT多特征分类预测

一区大黄蜂&#xff01;人工蜂群算法优化&#xff01;ABC-CNN-LSTM-MATT多特征分类预测 目录 一区大黄蜂&#xff01;人工蜂群算法优化&#xff01;ABC-CNN-LSTM-MATT多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现ABC-CNN-LSTM-MATT人工蜂群…