【发布时间】:2015-07-02 15:20:29
【问题描述】:
有没有人有将 node.js 应用程序编译成可分发二进制文件的经验?我看到的两个选项是 encloseJS 和 nexe,但除了使用 encloseJS 更快的编译时间之外,并没有真正看到主要区别。
【问题讨论】:
标签: node.js
有没有人有将 node.js 应用程序编译成可分发二进制文件的经验?我看到的两个选项是 encloseJS 和 nexe,但除了使用 encloseJS 更快的编译时间之外,并没有真正看到主要区别。
【问题讨论】:
标签: node.js
我一直在使用 JXcore - https://github.com/jxcore/jxcore 除了编译之外,它还有很多功能,包括多线程和重启管理。但它似乎确实回到了 Node 0.10。现在节点 4 已经发布,并且长期支持安排已经到位,可能是时候再看看 Nexe 和 Enclose,因为我不使用额外的 JXcore 功能。
我注意到 enclose.js (http://enclosejs.com/https://www.npmjs.com/package/enclose) 不是开源的,仅可免费用于评估目的:
您同意不在超过 一次一台计算机,而不是通过任何网络或远程或其他方式 使用权。此规定仅适用于个人副本,不适用于 多系统许可证或评估版。如果 EncloseJS 是由 你的雇主 你同意在之前得到你的雇主的明确许可 如此处所述,在多台计算机上安装 EncloseJS。
Enclose 适用于四个特定版本(今天):0.12.7、2.5.0、4.2.2、5.1.0。
我在使用带有 express.io 的 Enclose 时遇到了问题。可能有解决方案,但我没有探索太远。
Nexe (https://www.npmjs.com/package/nexe) 是具有 MIT 许可证的开源软件。该站点指出了一些额外的限制,例如不使用本机模块,并且只遍历“简单”需求,但我怀疑这些与 Enclose 相同。可以选择任何版本的node,Nexe好像是下载node源码,从头开始编译,需要一些时间(第一次17分钟,4分钟无改动重新编译)。
Nexe 给了我关于 express.io 的警告。对于一个简单的 4 行应用程序,使用默认选项(最新节点 5.1.0),exe 不起作用 - 抱怨无法找到模块 ./lib。
var app = require('express.io')();
app.http().io();
app.listen(8081);
app.get('/',function(req,res){res.send('Hi!');});
但是当我将其更改为排除 express.io 模块时,它在 Nexe 中工作。
var module = 'express.io';
var app = require(module)();
app.http().io();
app.listen(8081);
app.get('/',function(req,res){res.send('Hi!');});
我发现离开 express.io(似乎已经有一年多没有维护了),我的应用可以由 Enclose 编译,但不能由 Nexe 编译:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
app.get('/',function(req,res){res.send('Hi!');});
server.listen(8081);
Nexe 和 Enclose 似乎都有相似的流行度/下载统计数据。
【讨论】: