簡體   English   中英

無法使用pm2啟動節點進程

[英]Can not start node process using pm2

我是node.js的新手,很難使用pm2來演示應用程序。 當我轉到/srv/myapp並運行yarn start時,該應用程序運行良好,但是當我嘗試通過轉到/srv/myapp並運行pm2 start index.js進行妖魔化時,

我看到該過程似乎已經開始:

[PM2] Starting /srv/myapp/index.js in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem       │ user │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ index    │ 0  │ fork │ 14528 │ online │ 0       │ 0s     │ 0%  │ 16.0 MB   │ root │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

但是前端沒有響應(相反,我收到502 errors ,並且節點服務器未按預期方式在端口3000上偵聽( fuser 3000/tcp返回任何結果)。

這有什么問題嗎? 我該如何解決?

通過命令檢查pm2日志: pm2 logs如果沒有錯誤,則說明您的應用程序沒有問題。

pm2使用節點啟動您的應用程序,一個問題是它不提供任何日志記錄或輸出,就像通過其他方式啟動應用程序一樣(例如, node index.js這樣做),因此它並沒有真正讓您知道是否正在發生任何事情錯誤。

我一直發現,通過從pm2之前的node啟動它來測試您的應用程序是個好主意。

給定node index.js會導致錯誤: import bb from 'bluebird';SyntaxError: Unexpected token import ,這聽起來像您正在使用ES6導入功能, 默認情況下Node不支持 我懷疑Yarn是啟用這些功能,還是將您的ES6代碼轉換為ES5以便在執行yard start時可以運行Node,但是我對Yarn並不了解。

可能是您指向錯誤的文件,並且已經創建了一個已編譯的文件dist.js (作為示例),Yarn正在使用不透明的start命令愉快地運行。


編輯:查看源代碼后,似乎正在使用稱為babel-node東西 請參閱package.json中啟動腳本

"scripts": {
  "start": "babel-node index.js",

pm2不知道如何使用babel-node來運行index.js,即使它做到了,babel-node強烈建議您不要在生產中使用babel-node(大概是在使用pm2 ):

不適用於生產用途您不應在生產中使用babel-node。 由於緩存存儲在內存中,因此不必要地增加了內存使用量。 由於整個應用程序都需要動態編譯,因此您還將始終遭受啟動性能損失。

查看帶有Babel的示例Node.js服務器,以了解如何在生產部署中使用Babel。

還有關於ES6模塊加載的說明:

ES6樣式的模塊加載可能無法按預期方式運行由於技術限制,babel-node REPL中不完全支持ES6樣式的模塊加載。

我強烈建議您添加一個build腳本,以使用babel生成一個“ distribution”轉譯版本並進行部署!

"scripts": {
  "start": "babel-node index.js",
  "build": "babel index.js --out-file index-dist.js

或者沿着這些路線,運行yarn build (或yarn run build ?),然后pm2 start index-dist.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM