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

使用pkg库将Next.js构建产物打包为.exe文件遇错求助

解决Next.js构建产物打包为.exe文件的方案

1. 先补充package.json的bin字段并编写启动脚本

pkg要求package.json中必须有bin字段指定程序入口,但Next.js默认通过next start启动,所以需要自定义启动脚本:

  • 在项目根目录创建server.js,内容如下:
const { createServer } = require('http');
const { parse } = require('url');
const next = require('next');

// 生产环境需设为false
const dev = false;
const app = next({ dev });
const handle = app.getRequestHandler();

app.prepare().then(() => {
  createServer((req, res) => {
    const parsedUrl = parse(req.url, true);
    handle(req, res, parsedUrl);
  }).listen(3000, (err) => {
    if (err) throw err;
    console.log('> Ready on http://localhost:3000');
  });
});
  • 在package.json中添加bin字段:
{
  "bin": "./server.js",
  // 保留原有其他字段
}

2. 完成Next.js生产构建

先执行官方构建命令生成生产产物:

npm run build

3. 执行pkg打包命令

由于Next.js构建产物(.next目录)需要被打包进.exe,需指定包含的资产文件,有两种方式:

方式一:通过package.json配置

在package.json中添加pkg专属配置:

{
  "pkg": {
    "scripts": ".next/**/*.js",
    "assets": [".next/static/**/*", ".next/server/**/*"]
  }
}

然后执行打包命令:

pkg . -t node16-win-x64

方式二:命令行直接指定资产

无需修改package.json,直接在命令中添加资产参数:

pkg . -t node16-win-x64 --assets ".next/static/**/*" --assets ".next/server/**/*" --scripts ".next/**/*.js"

4. 运行说明

打包完成后,双击生成的.exe文件即可启动Next.js服务,默认监听3000端口,访问http://localhost:3000即可查看应用。如需修改端口,直接修改server.js中的listen(3000)端口数值即可。

内容的提问来源于stack exchange,提问作者BharathKS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:35:26