PTT推薦

[請益] nodejs專案轉檔成二進位執行檔

看板Soft_Job標題[請益] nodejs專案轉檔成二進位執行檔作者
lecrepuscule
(CDBP)
時間推噓 推:0 噓:0 →:0

版上各位大大好

目前用nodejs做了一個專案,因為想開放給其他使用者使用,所以想把專案build成一個二進位執行檔,讓其他使用者不需要裝node環境也能執行。

我當初寫專案是使用ESM,目前使用了幾個方法都沒辦法順利轉檔成二進位執行檔:


1. pkg與nexe等打包工具:爬文發現這兩個工具都是支援commonJS,所以有先把專案使用esbuild轉檔成commonJS,雖然打包過程都沒有出現錯誤,但執行時卻會出現
require() of ES Module ... not supported.的提示。
然而即便我直接使用ESM的檔案進行打包,也會顯示無法轉檔成bytecode的錯誤。
期間有在stackoverflow和github討論區爬文,發現兩年前也有相關的討論話題,但似乎並沒有被解決: https://github.com/vercel/pkg/issues/1291


2. 使用nodejs v20原生的打包指令
我是參考這個官方文件來操作:
https://nodejs.org/api/single-executable-applications.html
但官方文件已經講得很清楚,目前只支援單個文件的打包,所以也不適用我的專案。


在網路上爬文幾乎都是建議上述兩種做法,無計可施之下還有查到第三種作法:

3. Deno本身支援compile binary executables,但我目前的專案已經是使用nodejs,
也已經完成的狀態,
閱覽了一下Deno官方文件,發現程式碼要重構的地方應該不少,也不知道會不會有
新的坑。



因此想請問版上的大家,是否有使用ESM遇到類似情況,以及是否有更好的辦法可以解決

非常感謝!!

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.11.125 (臺灣)
PTT 網址