Electron
Installation
Is trtc-electron-sdk
compatible with Electron v12.0.1?
Yes, it is.
trtc-electron-sdk
does not rely on the SDK of Electron and therefore does not have version requirements.
What should I do if a 404 error occurs when I download Electron?
Type the following command in the terminal
$ npm config set electron_custom_dir 8.1.1 # Determined by the actual version number
Running
When I ran the SDK on 32-bit Windows, the error “Error:resource\trtc_electron_sdk.node is not a valid Win32 application” occurred and the system said I should use 32-bit trtc_electron_sdk.node. What should I do?
Solution:1. Go to the directory of
trtc-electron-sdk
(xxx/node_modules/trtc-electron-sdk) in your project and run the following command:npm run install -- arch=ia32
2. Download the 32-bit
trtc_electron_sdk.node
and build your project again.
I launched the Electron demo on the VS Code terminal, and a blank screen was displayed after room entry. What should I do?
You need to request access to the camera from VS Code. Use the code below:
cd ~/Library/Application\ Support/com.apple.TCC/cp TCC.db TCC.db.baksqlite3 TCC.db # sqlite> prompt appears.# for Mojave, CatalinaINSERT into access VALUES('kTCCServiceCamera',"com.microsoft.VSCode",0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);# for BigSurINSERT into access VALUES('kTCCServiceCamera',"com.microsoft.VSCode",0,1,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);
What should I do if an undefined null pointer error “cannot read property 'dlopen' of undefined” occurs when I run the demo?
Solution:
Context isolation is enabled by default in Electron 12. Disable it by setting contextIsolation
to false
.let win = new BrowserWindow({width: 1366,height: 1024,minWidth: 800,minHeight: 600,webPreferences: {nodeIntegration: true,contextIsolation: false},});
What should I do with the frequent reentry issue in the SDK for Electron?
This issue should be dealt with case by case. Possible causes include:
The client has bad network conditions (network disconnection triggers reentry).
The room entry signaling message is sent twice consecutively.
The device is overloaded, which results in decoding failure.
The same UID is used to log in on different devices.
What should I do if the error “Electron failed to install correctly” occurs in the terminal?
After download, when you run your project, the following error may occur in the terminal:
Error: Electron failed to install correctly, please delete node_modules/electron and try installing again
Follow the steps below to manually download Electron:
1. Run
npm config get cache
to view the cache path.2. Manually download Electron to the cache folder.
3. Run
npm install
again.
What should I do if VS Code crashes on macOS when the SDK starts the camera and mic?
If you launch your project using the VS Code terminal, the process may crash when the SDK starts the camera and mic:
Solution A: Use an authorized terminal to run your project.
Solution B: Go to System Preferences > Security & Privacy and allow VS Code to load.
Solution C: Follow the steps below to disable SIP:
1.1 Restart your computer, holding down Command + R until it enters the recovery mode.
1.2 Open the terminal and enter
csrutil disable
.1.3 Restart your computer in the normal mode. You can now use the VS Code terminal to start your project.
1.4 To switch SIP back on, enter
csrutil enable
in step 2.
What should I do if Electron reports the error “xx is not defined” in the console?
When you run your project, Electron may report the error “xx is not defined” in the console (
xx
is the node module):Uncaught ReferenceError: require is not defined
Set
nodeIntegration
to true
in the main.js
file of Electron:let win = new BrowserWindow({width: 1366,height: 1024,webPreferences: {nodeIntegration: true, // Set it to `true`},});
Packaging
What should I do with a .node module loading issue?
Errors
You may see one of the following error messages when running your project after compilation:
NodeRTCCloud is not a constructor
Cannot open xxx/trtc_electron_sdk.node
or The specified module could not be found
dlopen(xxx/trtc_electron_sdk.node, 1): image not found
Solution
The errors indicate that the
trtc_electron_sdk.node
module hasn’t been built into your project successfully. To fix the problem, follow these steps:1. Install
native-ext-loader
.$ npm i native-ext-loader -D
2. Modify webpack configuration.
2.1 Add the following code before
module.exports
to pass the --target_platform
command line parameter to webpack.config.js
so that your project can be packaged correctly for its target platform.const os = require('os');// If you don’t pass `target_platform`, your project will be packaged for the current 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` indicates Windows, including 32-bit and 64-bit. `darwin` indicates macOS.if (!['win32', 'darwin'].includes) target = os.platform();return target;})();
2.2 Add rules:
module: {rules: [{test: /\.node$/,loader: 'native-ext-loader',options: {rewritePath: targetPlatform === 'win32' ? './resources' : '../Resources'}},]}
notice
If you create your project with
vue-cli
, webpack configuration can be found in the configureWebpack
option of vue.config.js
.If you create your project with
create-react-app
, the path to the webpack configuration file is [Project directory]/node_modules/react-scripts/config/webpack.config.js
.3. Add packaging and building scripts to
packages.json
.3.1 Add packaging configuration for
electron-builder
(case sensitive):"build": {"Omit": "...","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 For projects created with
create-react-app
, add building and packaging scripts as follows:"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 For projects created with
vue-cli
, add building and packaging scripts as follows:"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"}
What should I do if I cannot find the entry point file?
When you use
electron-builder
to build a project created with create-react-app
, the following error may occur:$ 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
indicates that the entry point file was not found.Solution
1. Move and rename the entry point file:
$ cd [Project directory]$ mv main.electron.js ./public/electron.js
2. Modify the
pacakge.json
file:{"main": "public/electron.js","Omit": "..."}
What should I do if a syntax error of the fs-extra
module occurs during packaging?
[Project directory]\node_modules\electron-builder\node_modules\fs-extra\lib\empty\index.js:33} catch {^SyntaxError: Unexpected token {at new Script (vm.js:51:7)
- Installation
- Running
- When I ran the SDK on 32-bit Windows, the error “Error:resource\trtc_electron_sdk.node is not a valid Win32 application” occurred and the system said I should use 32-bit trtc_electron_sdk.node. What should I do?
- I launched the Electron demo on the VS Code terminal, and a blank screen was displayed after room entry. What should I do?
- What should I do if an undefined null pointer error “cannot read property 'dlopen' of undefined” occurs when I run the demo?
- What should I do with the frequent reentry issue in the SDK for Electron?
- What should I do if the error “Electron failed to install correctly” occurs in the terminal?
- What should I do if VS Code crashes on macOS when the SDK starts the camera and mic?
- What should I do if Electron reports the error “xx is not defined” in the console?
- Packaging