Gmail 觸發器無法運作(大多數情況下)

描述問題/錯誤/問題

Gmail 觸發器的工作流程無法正常運作且發佈速度非常慢

錯誤訊息是什麼(如果有的話)?

Gmail 觸發器無法可靠地工作。我設法讓它工作了幾次,但大多數時候它只是不再對新郵件做出反應。在我執行 n8n 自託管的電腦上,我看到以下錯誤。這是一台出站連接非常有限的機器,但我曾經讓它工作過,所以我不認為這應該是問題所在。

Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at AxiosError.from (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/axios/dist/node/axios.cjs:1355:24)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at RedirectableRequest.handleRequestError (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/axios/dist/node/axios.cjs:4026:25)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at RedirectableRequest.emit (node:events:520:35)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at ClientRequest.eventHandlers. (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/follow-redirects/index.js:56:24)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at ClientRequest.emit (node:events:508:28)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at emitErrorEvent (node:_http_client:108:11)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at TLSSocket.socketErrorListener (node:_http_client:575:5)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at TLSSocket.emit (node:events:520:35)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at emitErrorNT (node:internal/streams/destroy:170:8)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at emitErrorCloseNT (node:internal/streams/destroy:129:3)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at Axios.request (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/axios/dist/node/axios.cjs:5427:41)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at processTicksAndRejections (node:internal/process/task_queues:104:5)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at invokeAxios (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/@n8n/backend-network/src/http/axios/invoke.ts:15:10)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at httpRequest (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/@n8n/backend-network/src/http/axios/request.ts:211:5)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at Object.request (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/@n8n/backend-network/src/http/outbound-http.ts:188:12)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at paginatedRequest (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/utils/strapi-utils.ts:87:15)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at getCommunityNodeTypes (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/modules/community-packages/community-node-types-utils.ts:54:9)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at CommunityNodeTypesService.fetchNodeTypes (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/modules/community-packages/community-node-types.service.ts:93:13)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at CommunityNodeTypesService.getCommunityNodeTypes (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/modules/community-packages/community-node-types.service.ts:213:4)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at CommunityNodeTypesController.getCommunityNodeTypes (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/modules/community-packages/community-node-types.controller.ts:18:10)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: read ECONNRESET
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: Error: read ECONNRESET
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: Error fetching from Strapi API (https://api-staging.n8n.io/api/community-nodes): read ECONNRESET
Aug 01 10:22:51 orejon.ll.iac.es n8n[1375]: There was a problem in ‘Gmail Trigger’ node in workflow ‘7’: ‘undefined’

請分享您的工作流程

請分享最後一個節點返回的輸出

您的 n8n 設定相關資訊

  • n8n 版本:2.32.5
  • 資料庫(預設:SQLite):
  • n8n EXECUTIONS_PROCESS 設定(預設:own, main):
  • 執行 n8n 的方式(Docker、npm、n8n 雲端、桌面應用程式):npm
  • 作業系統:Linux Ubuntu 22.04

Hi @angelv
那些 ECONNRESET 追蹤是 n8n 從 api-staging.n8n.io 獲取社群節點列表,而不是 Gmail。Gmail Trigger 行上的「undefined」表示對 Google 的輪詢呼叫在套接字層級中斷了,所以沒有 API 回應本體可以提取訊息,失敗的輪詢會被跳過且不重試,這就是為什麼整分鐘的郵件永遠不會到達。從該主機開放出站 443 埠到 www.googleapis.com 和 oauth2.googleapis.com。從該機器本身進行測試:

curl -sS -o /dev/null -w '%{http_code}\n' https://www.googleapis.com/gmail/v1/users/me/profile

401 是健康的結果,表示主機可以到達,只是缺少令牌。連線錯誤或掛起表示是出站過濾器阻止了。
對於發佈速度緩慢,這可以阻止 n8n 在每次編輯器載入時尋找社群節點:

N8N_COMMUNITY_PACKAGES_ENABLED=false

curl 似乎沒有問題:

angelv-adm@orejon:~$ curl -sS -o /dev/null -w ‘%{http_code}\n’ https://www.googleapis.com/gmail/v1/users/me/profile
401

我使用這些變數啟動 n8n:

Environment=PATH=/home/angelv-adm/.npm-global/bin/:/usr/bin:/bin
Environment=GENERIC_TIMEZONE=Atlantic/Canary
Environment=NODES_EXCLUDE=“”
Environment=N8N_HOST=orejon.ll.iac.es
Environment=N8N_PROTOCOL=https
Environment=N8N_PORT=5678
Environment=N8N_EDITOR_BASE_URL=https://orejon.ll.iac.es/
Environment=WEBHOOK_URL=https://orejon.ll.iac.es/
Environment=N8N_PROXY_HOPS=1
Environment=N8N_DIAGNOSTICS_ENABLED=false
Environment=N8N_VERSION_NOTIFICATIONS_ENABLED=false
Environment=N8N_TEMPLATES_ENABLED=false
Environment=N8N_ONBOARDING_FLOW_DISABLED=true
Environment=N8N_LICENSE_AUTO_RENEW_ENABLED=false
Environment=N8N_DIAGNOSTICS_CONFIG_FRONTEND=
Environment=N8N_DIAGNOSTICS_CONFIG_BACKEND=
Environment=EXTERNAL_FRONTEND_HOOKS_URLS=

但當我嘗試取得測試事件時,收到逾時錯誤:

N8N_COMMUNITY_PACKAGES_ENABLED=false

我在使用「Execute Command」節點,我的理解是如果我設定這個的話它會失敗?

嘿 @angelv

雖然你提到出站連接受限,但特定的錯誤 connect ETIMEDOUT 2001:4860:4840:400::443 顯示 n8n 正在嘗試透過 IPv6 連接到 Google,而你的網路/機器要麼未配置 IPv6,要麼出站防火牆正在丟棄 IPv6 封包。

日誌中有關 api-staging.n8n.io 的 ECONNRESET 錯誤進一步確認你的機器在與外部 API 建立穩定的出站 TLS 連接時存在困難。

由於你的機器出站連通性受限,且在 IPv6 位址上失敗,你需要強制 Node.js(進而 n8n)優先使用 IPv4。

將以下環境變數新增到你的 n8n 啟動配置中(你設定 N8N_HOST 等的地方):

Environment=NODE_OPTIONS=--dns-result-order=ipv4first

如果你使用 systemd 服務檔案(根據你的 Environment= 片段來看似乎是這樣):

  1. 編輯服務檔案:sudo nano /etc/systemd/system/n8n.service(或你的特定檔案名稱)。
  2. 新增該行:Environment=NODE_OPTIONS=--dns-result-order=ipv4first。
  3. 重新載入 systemd:sudo systemctl daemon-reload。
  4. 重啟 n8n:sudo systemctl restart n8n。

若要確認修正在 n8n 外部是否有效,從你的終端機執行此命令:

# 強制 IPv4 curl 到 Google API
curl -4 -v https://www.googleapis.com/gmail/v1/users/me/profile
  • 如果返回 401(未授權):網路路徑是開放的(401 是預期的,因為你沒有傳遞權杖)。
  • 如果仍然逾時:你的出站防火牆完全阻止了到 Google IP 範圍的連接埠 443,你必須要求網路管理員將 *.googleapis.com 加入白名單。

針對其他日誌錯誤

  • Error fetching from Strapi API... ECONNRESET:這是 n8n 嘗試檢查社群節點更新的情況。它與你的 Gmail 工作流程無關,但確認了你出站連接的一般不穩定性。你可以忽略此錯誤,或在可能的情況下停用社群節點檢查。
  • There was a problem in 'Gmail Trigger'... 'undefined':這是由螢幕截圖中提到的 ETIMEDOUT 導致的一般當機。套用 IPv4 修正後,此錯誤應該會消失。

這有幫助嗎?

不,那個與「執行命令」無關。N8N_COMMUNITY_PACKAGES_ENABLED 只控制 npm 社群節點套件,即從「社群節點」設定頁面安裝的套件。「執行命令」是一個內建核心節點,由 NODES_EXCLUDE 單獨控制,你已經將其設定為空陣列,所以它無論如何都會繼續載入。

非常感謝。我不知道在這個網路中陷入 IPv6 問題有多少次,但不知怎地它還是沒有在我的腦海中點擊…

我在我的服務檔案中新增了這些,重新啟動,並立即開始取得結果

Environment=NODE_OPTIONS=–dns-result-order=ipv4first
Environment=N8N_COMMUNITY_PACKAGES_ENABLED=false

非常感謝!

IPv4 診斷看起來沒問題——但要檢查你在哪裡設定 NODE_OPTIONS。如果 n8n 在 systemd 下運行,在你的 shell 或 .bashrc 中匯出它永遠無法到達該服務。必須在單位檔案中設定 Environment=NODE_OPTIONS=–dns-result-order=ipv4first(或 EnvironmentFile),然後執行 systemctl daemon-reload 並重新啟動。

確認它實際上已套用,而不是假設:sudo strings /proc/$(pgrep -f n8n | head -1)/environ | grep NODE_OPTIONS。如果該輸出中沒有它,表示該設定從未套用,這就是為什麼沒有任何改變。