中午,接到朋友有一個需求,想用node寫一個服務,將word文檔轉換爲html。html
爲何不用java呢?我問到(畢竟他後端語言用的是java)。前端
他說他找到的幾個第三方插件都不是特別符合,轉換後總有一些問題。java
他找到了一個前端的本地轉換的插件,比較符合他的要求。node
可是是純前端的本地轉換,上傳文件而後轉換那種。git
因此他問我能不能把這個用node寫成後端服務。github
我也恰好挺感興趣的,就動手作了起來。spring
網上參考了各路大神意見,都說nestJs還不錯,比較像spring,npm
恰好我也對spring比較熟悉,折騰了半個小時,搭建nestJs項目,json
寫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目錄的方法?