V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
li1218040201
V2EX  ›  分享创造

如何将一个 Next.js 项目打包成二进制运行

  •  
  •   li1218040201 · 9 天前 · 1317 次点击
    背景
    我需要使用 `lobe-chat`,尝试过部署到 `vercel` 并配置自定义域名,有时候还是会访问不了,即使能访问速度也有点慢。

    直接在本地运行 `lobe-chat` 速度还是非常理想的,但是每次都要打开终端执行命令然后在浏览器打开,非常麻烦。浏览器标签一多也不好找。

    所以想能不能实现类似 `Pake` 这种直接把一个网站打包成二进制,双击打开就能用。
    试过 `pkg` 这种打二进制的方案,对于 `Next.js` 项目来说坑很多,暂时没解决。想问问还有其他方案吗

    或者针对「使用 `lobe-chat`」需求,有什么好的方案吗,要求就是稳定、快、免费。
    12 条回复    2024-11-26 20:38:21 +08:00
    variousdidt
        1
    variousdidt  
       9 天前
    自定义域名在 cloudfare 上在包一层,国内就能访问了
    variousdidt
        2
    variousdidt  
       9 天前
    @variousdidt cloudflare
    li1218040201
        3
    li1218040201  
    OP
       9 天前
    感谢,也是一个方案,我去试试。
    monmon
        4
    monmon  
       8 天前
    li1218040201
        5
    li1218040201  
    OP
       8 天前
    @monmon 试了下不行,翻了 ncc issues 别人也遇到了同样的问题,而且解决不了 https://github.com/vercel/ncc/issues/1138
    li1218040201
        6
    li1218040201  
    OP
       8 天前
    @li1218040201 最后的回复提到 next build and standalone 我之前也试过,Windows 环境下有问题,也一直解决不了
    songray
        7
    songray  
       8 天前 via iPhone
    试试 deno compile
    li1218040201
        8
    li1218040201  
    OP
       8 天前
    https://github.com/nextjs/deploy-deno 我参考这个项目,能用 deno server.cjs 成功运行打包后的产物,而且也能打包出一个 120MB 的 .exe 文件,但是运行 .exe 文件是报错的。

    这种问题没法排查,网上也搜不到类似的。

    ![Snipaste_2024-11-24_00-12-38.png]( https://image.988589.xyz/api/cfile/AgACAgUAAyEGAASC5r41AAMnZ0H-8DKOcwhIRYEanezZE8FI6AYAApe9MRulbhBWgQNAYq5BdnkBAAMCAAN5AAM2BA)
    li1218040201
        9
    li1218040201  
    OP
       8 天前
    贴不了图片,这个是运行时的报错

    PS C:\Users\xxx\Documents\temp\my-next-app\.next\standalone> .\server.exe
    ✅ Granted all env access.
    error: Uncaught NotSupported: chdir 'C:\Users\xxx\AppData\Local\Temp\deno-compile-server.exe\standalone': chdir 'C:\Users\xxx\AppData\Local\Temp\deno-compile-server.exe\standalone'
    at Process.chdir (ext:deno_fs/30_fs.js:155:3)
    at Object.<anonymous> (file:///C:/Users/xxx/AppData/Local/Temp/deno-compile-server.exe/standalone/server.cjs:6:9)
    at Object.<anonymous> (file:///C:/Users/xxx/AppData/Local/Temp/deno-compile-server.exe/standalone/server.cjs:39:4)
    at Module._compile (node:module:748:34)
    at Object.Module._extensions..js (node:module:767:10)
    at Module.load (node:module:665:32)
    at Function.Module._load (node:module:537:12)
    at Object.loadCjsModule (ext:deno_node/02_init.js:64:22)
    at loadCjsModule ([ext:ext\node\lib.rs:783:29]:2:32)
    at [ext:ext\node\lib.rs:783:29]:3:7
    renmu123
        10
    renmu123  
       5 天前
    写个 bat 脚本解决
    li1218040201
        11
    li1218040201  
    OP
       5 天前
    @renmu123 写 bat 脚本没问题,但是脚本内容怎么写呢 😂
    li1218040201
        12
    li1218040201  
    OP
       5 天前
    @renmu123 哦我理解了你的意思,是把 运行 lobe-chat 的命令写成 .bat 脚本对吗

    ```
    cd /lobe-chat
    npm run start
    ```

    是我之前没想到的,确实可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6198 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 02:08 · PVG 10:08 · LAX 18:08 · JFK 21:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.