nestJs項目打包部署的方法


中午,接到朋友有一個需求,想用node寫一個服務,將word文檔轉換為html。

為什么不用java呢?我問到(畢竟他后端語言用的是java)。

他說他找到的幾個第三方插件都不是特別符合,轉換后總有一些問題。

他找到了一個前端的本地轉換的插件,比較符合他的要求。

但是是純前端的本地轉換,上傳文件然后轉換那種。

所以他問我能不能把這個用node寫成后端服務。

我也剛好挺感興趣的,就動手做了起來。

 

網上參考了各路大神意見,都說nestJs還不錯,比較像spring,

剛好我也對spring比較熟悉,折騰了半個小時,搭建nestJs項目,

寫controller,service,代碼寫完了,刪掉多余的console.log,

我自己寫的總共不到10行代碼。

controller

 

 service

 

 

本地測試,基本沒什么問題。大功告成,准備部署!

運行npm run build,將dist目錄復制到服務器,

服務器安裝nodeJS, 安裝pm2, 用pm2 來啟動dist目錄下的main.js

然后打開瀏覽器訪問,發現服務沒有啟動成功 ???

用pm2查看日志,大概說是沒有找到nest/core模塊。

 

仔細看一下dist目錄,很快發現了異常,

 

 

目錄中只有幾個普通的js文件,那些依賴文件呢 ?

回頭看本地的dist文件夾,打包出來的dist 目錄只有300多k。

用過npm的前端都知道,dist文件夾一般都不會這么小,一般一個項目里面會有各種依賴。

那依賴去哪里了呢? 我打包的方法不對 ? 仔細看package.json。確實沒有其他build方法啊。

 

百度google一陣搜索nestJs打包,大家都告訴我npm run build。。。。

莫非是我build設置有問題 ? 看了好幾遍 tsconfig.build.json,

不懂的配置都去查一下,好像沒什么問題啊。

 

等等,dist目錄下好像有一個tsconfig.build.tsbuildInfo文件。

打開看看,

 

 里面是相關依賴的指向位置,我忽然理解了什么。

可是這不是我想要的,我不想要指向位置!我想要把依賴打包進去。

又是google一陣搜索(百度已經搜不到相關資料了)。

去nestJs的github的issue里面找了半天,還真是找不到相關資料。

難道全世界只有我一個遇到這個問題? 什么垃圾nestJs,我再也不想用了。

准備放棄,又舍不得沉沒成本。。。

 

又一遍遍的回想之前的問題,想到依賴指向位置的時候,忽然靈光一閃

如果,我在服務器上打包呢? 那指向的位置不就正確了嗎!!!!

說做就做,將整個項目除了node_module和dist目錄,其他都放到服務器

運行npm install,運行npm run build,進入dist目錄,運行node main.js

瀏覽器訪問,果然成功了。

開心!!!

 

后記:雖然打包部署成功了,回想這次折騰這么久的經歷,主要問題在於
根據我以前的經驗,打包一般都會把依賴打進去,然后生成一個單獨的包用來部署。

這nestJs卻好像不行,那如果是要部署到一台沒有聯網的電腦呢? 

又或者確實有將依賴打入dist目錄的方法?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM