在 Node js 中创建桌面应用程序会使我的代码处于 public 的危险之中吗?

will creating a desktop application in Node js put my code in danger of being public?

我正计划创建我的 Web 应用程序的桌面版本。但恐怕最终用户也可以查看服务器代码。因为桌面上的所有内容都是 JavaScript,与 .exe 文件不同。我正在使用 APP.js.

编辑:我们是否可以隐藏我们的代码?

将您的可执行文件提供给人们意味着他们将能够获得您的原始逻辑并准确理解您的代码是如何工作的,.exe 文件也不安全,因为它们对逆向工程是开放的。

我建议研究二进制和代码混淆。

您可以使用像 https://github.com/zeit/pkg 这样的节点打包器,它会打包并准备好在不同的平台上分发,而无需内部任何 js。

使用 NW.js,您可以将 JS 文件编译为 bytecode/machine 代码,而无需分发 JS 文件。参见 http://docs.nwjs.io/en/latest/For%20Users/Advanced/Protect%20JavaScript%20Source%20Code/

我用过zeit/pkg来打包nodejs应用。它隐藏了所有的源代码,并为不同的平台制作了一个可执行文件。

请添加以下代码以在 Nodejs 应用程序中使用 pkg:

package.json

"main": "app.js",
"scripts": {
"start": "npm start"
 },
"bin" : "$DIR\node_modules\npm\cli.js"

然后运行命令pkg .

:

1)你也可以直接打包app.js(如果你没有任何其他资产添加到pkg)通过命令:

pkg app.js

2) 它将在您当前的工作目录中创建可执行文件。

3) 你也可以在 "bin" 中给出入口点:

示例:

package.json

"main": "app.js",
"scripts": {
"start": "npm start"
 },
"bin" : "./bin/my-bin.js"

bin/my-bin.js

#!/usr/bin/env node

var join = require('path').join
var childProcess = require('child_process');
var args = process.argv.slice(2);

 args.unshift(__dirname + '/../'); 

childProcess.exec('npm start', (err, stdout) => {
if (err) console.log(err);
console.log(stdout);
})

然后,在当前工作目录中,

运行

pkg .