您可以使用提到的 bytenode 是 Nicolas Guérinet 的回答。
但是,当您尝试在电子项目中使用 bytenode CLI 生成的二进制文件时,会出现运行时错误。错误会说如下:
"Invalid or incompatible cached data (cachedDataRejected)"
要使二进制与电子一起工作,它必须由电子本身生成。
以下是如何让它工作:
假设您想在一个典型的电子项目中保护 main.js。
安装字节节点
npm i bytenode
将 main.js 重命名为其他名称,例如 temp.js。
使用以下代码创建一个新的 main.js:
const { app, BrowserWindow } = require('electron')
function createWindow() {
// Create the browser window.
mainWindow = new BrowserWindow({
width: 400,
height: 200
})
//use bytenode to convert js files to jsc
const bytenode = require("bytenode");
let compiledFilename = bytenode.compileFile({
filename: './temp.js',
output: './main.jsc'
});
//convert other Node.js files as required
}
app.whenReady().then(() => {
createWindow()
})
现在运行你的电子项目。当空白窗口出现时,查看您的项目目录,您将找到 main.jsc 文件。
将 main.js 更改为以下三行代码:
const bytenode = require('bytenode');
const myFile = require('./main.jsc');
myFile;
从您的项目中删除您的 nodejs 源文件 (temp.js) 并构建您的项目。
您还可以在将代码转换为 jsc 之前缩小和混淆代码。
感谢https://github.com/mapleby他在https://github.com/bytenode/bytenode/issues/63的帖子。我已经调整了他的想法以使其发挥作用。
这将使某人对您的代码进行逆向工程变得更加困难,但它仍然是可能的。