We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
当你开发了一个NodeJS程序,想要分发给其他人运行的时候,你会发现,你往往需要对方也来安装一个NodeJS环境。理想的方式是,我们可以把我们的程序打包成一个可执行文件,这样,就可以直接在对方的电脑上运行你的程序了;同时,我们将代码打成二进制形式,可以在一定程度上保护源代码以及API等处理的逻辑。
那么,能不能解决这样的需求呢?可以的。有很多程序包可以做到这件事情:pkg、nexe、node-packer、enclose、ncc,当然,对于使用web开发的程序,你还可以使用electron来开发,除了打包本身,还提供了GUI能力。
pkg
nexe
node-packer
enclose
ncc
electron
如果只是命令行的跨平台,不妨试试pkg,它可以在某一个平台下将你的NodeJS程序打包进一个可执行程序,并且可以在单一平台,打出主流的Windows、Mac、Linux下的运行程序。
Windows
Mac
Linux
在使用之前,请安装好所有相关依赖。如果我们想打包index.js文件,则执行pkg index.js。默认地,pkg会选择下载最新的NodeJS源码,并编译三个主流的平台,以笔者这里的情况是:node12-linux-x64, node12-macos-x64, node12-win-x64。 每一次打包,pkg会尝试从本地缓存优先寻找NodeJS的缓存包,如果本地没有找到,就会去远程获取。
index.js
pkg index.js
NodeJS
node12-linux-x64
node12-macos-x64
node12-win-x64
点击.exe,发现有些接口返回404 Not Found 例如下例,将exe放到其他文件下,尝试打开页面,发现报Can't get /
.exe
404 Not Found
exe
Can't get /
app.use('/', express.static('dist'));
复制代码因为pkg没有把这些文件给打包进去,他只会打包使用require或者 通过绝对路径__filename和__dirname的文件 所以需要修改为
require
__filename
__dirname
app.use('/', express.static(path.join(__dirname, 'dist')));
The text was updated successfully, but these errors were encountered:
No branches or pull requests
需求
当你开发了一个NodeJS程序,想要分发给其他人运行的时候,你会发现,你往往需要对方也来安装一个NodeJS环境。理想的方式是,我们可以把我们的程序打包成一个可执行文件,这样,就可以直接在对方的电脑上运行你的程序了;同时,我们将代码打成二进制形式,可以在一定程度上保护源代码以及API等处理的逻辑。
那么,能不能解决这样的需求呢?可以的。有很多程序包可以做到这件事情:
pkg
、nexe
、node-packer
、enclose
、ncc
,当然,对于使用web开发的程序,你还可以使用electron
来开发,除了打包本身,还提供了GUI能力。如果只是命令行的跨平台,不妨试试
pkg
,它可以在某一个平台下将你的NodeJS程序打包进一个可执行程序,并且可以在单一平台,打出主流的Windows
、Mac
、Linux
下的运行程序。使用场景
使用
在使用之前,请安装好所有相关依赖。如果我们想打包
index.js
文件,则执行pkg index.js
。默认地,pkg
会选择下载最新的NodeJS
源码,并编译三个主流的平台,以笔者这里的情况是:node12-linux-x64
,node12-macos-x64
,node12-win-x64
。每一次打包,
pkg
会尝试从本地缓存优先寻找NodeJS
的缓存包,如果本地没有找到,就会去远程获取。404 Not Found问题
点击
.exe
,发现有些接口返回404 Not Found
例如下例,将
exe
放到其他文件下,尝试打开页面,发现报Can't get /
复制代码因为
pkg
没有把这些文件给打包进去,他只会打包使用require
或者 通过绝对路径__filename
和__dirname
的文件所以需要修改为
打包Koa
具体操作流程和遇到问题解决方案请参考此文
The text was updated successfully, but these errors were encountered: