You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将构建后的Next.js应用通过nexe或pkg打包为可执行文件?

解决方案:用pkg/nexe打包Next.js构建后的应用为可执行文件

使用pkg打包的步骤

1. 准备入口脚本

在项目根目录创建start.js,替代默认的next start命令,确保能正确启动Next.js生产服务:

const { createServer } = require('http');
const { parse } = require('url');
const next = require('next');

const dev = false; // 生产环境必须关闭dev模式
const app = next({ dev });
const handle = app.getRequestHandler();

app.prepare().then(() => {
  const server = createServer((req, res) => {
    const parsedUrl = parse(req.url, true);
    handle(req, res, parsedUrl);
  });

  server.listen(3000, (err) => {
    if (err) throw err;
    console.log('> 服务器正在监听3000端口,访问 http://localhost:3000');
  });
});

2. 配置package.json

更新项目的package.json,指定入口文件和需要打包的资源:

{
  "bin": "./start.js",
  "pkg": {
    "assets": [".next/**/*"],
    "targets": ["node18-win-x64", "node18-linux-x64", "node18-macos-x64"] // 根据你的平台调整
  }
}

3. 安装并执行pkg

  • 全局安装pkg:npm install -g pkg
  • 执行打包:pkg .

打包完成后,项目根目录会生成对应平台的可执行文件,运行它就能看到终端输出监听3000端口的提示,浏览器访问http://localhost:3000即可正常使用应用。

使用nexe打包的步骤

1. 准备入口脚本

同样使用上面的start.js作为启动入口。

2. 安装并执行nexe

  • 全局安装nexe:npm install -g nexe
  • 执行打包命令(指定资源文件和输出文件名):
    # Windows
    nexe start.js --resource ".next/**/*" --output next-app.exe
    # Linux/macOS
    nexe start.js --resource ".next/**/*" --output next-app
    

或者在package.json中添加打包脚本,方便重复执行:

{
  "scripts": {
    "package": "nexe start.js --resource \".next/**/*\" --output next-app"
  }
}

运行npm run package即可完成打包。

常见问题排查

  • 确保使用的Node.js版本为LTS(如18.x/20.x),避免pkg/nexe版本不兼容导致的打包失败。
  • 如果打包后出现资源加载失败,检查assets配置(pkg)或--resource参数(nexe)是否正确包含了.next文件夹下的所有文件。
  • 若运行可执行文件时抛出依赖缺失错误,确认所有生产依赖都已添加到package.json的dependencies中,pkg/nexe会自动打包这些依赖。

内容的提问来源于stack exchange,提问作者Mohamed Amine Ben Ammar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:20:05