Update Dockerfile
Browse filesENV NODE_FUNCTION_ALLOW_EXTERNAL=puppeteer
作用:這是 n8n 的一個安全設定。它像一張「通行證」,明確告訴 n8n:「我允許在 Code 節點中使用 require('puppeteer')」。如果沒有這一行,就算安裝了套件,n8n 也會為了安全而阻止它被載入。
RUN npm install -g n8n@${N8N_VERSION} puppeteer --omit=dev
作用:這是在安裝 n8n 的同時,也把 puppeteer 這個 Node.js 套件一起安裝到全域環境中。這樣當你的 Code 節點執行 require('puppeteer') 時,系統就能成功找到並載入它。
- Dockerfile +6 -4
Dockerfile
CHANGED
@@ -3,7 +3,6 @@ FROM node:20-alpine
|
|
3 |
|
4 |
# --- Build-time arguments ---
|
5 |
ARG N8N_VERSION=latest
|
6 |
-
# 基礎映像檔已包含 node 用戶,其家目錄在 /home/node
|
7 |
ARG N8N_PATH=/home/node/.n8n
|
8 |
|
9 |
# --- 環境變數設定 ---
|
@@ -15,6 +14,9 @@ ENV N8N_DISABLE_PRODUCTION_MAIN_PROCESS_BETA=true
|
|
15 |
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
16 |
ENV PUPPETEER_ARGS="--no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage --disable-gpu"
|
17 |
|
|
|
|
|
|
|
18 |
# --- 安裝系統依賴 ---
|
19 |
USER root
|
20 |
RUN apk add --no-cache \
|
@@ -22,8 +24,9 @@ RUN apk add --no-cache \
|
|
22 |
chromium \
|
23 |
procps-ng
|
24 |
|
25 |
-
# --- 安裝 n8n ---
|
26 |
-
|
|
|
27 |
|
28 |
# --- 設定權限 ---
|
29 |
RUN mkdir -p ${N8N_PATH} && \
|
@@ -37,7 +40,6 @@ WORKDIR /home/node
|
|
37 |
EXPOSE 5678
|
38 |
|
39 |
# --- 啟動 n8n 並在日誌中顯示公開網址 ---
|
40 |
-
# 這是修改的關鍵部分
|
41 |
CMD sh -c 'echo "-----------------------------------------------------" && \
|
42 |
echo "n8n is running!" && \
|
43 |
echo "Access it at: https://${SPACE_HOST}" && \
|
|
|
3 |
|
4 |
# --- Build-time arguments ---
|
5 |
ARG N8N_VERSION=latest
|
|
|
6 |
ARG N8N_PATH=/home/node/.n8n
|
7 |
|
8 |
# --- 環境變數設定 ---
|
|
|
14 |
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
15 |
ENV PUPPETEER_ARGS="--no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage --disable-gpu"
|
16 |
|
17 |
+
# --- 關鍵修正:允許 n8n 的 Code 節點使用 puppeteer ---
|
18 |
+
ENV NODE_FUNCTION_ALLOW_EXTERNAL=puppeteer
|
19 |
+
|
20 |
# --- 安裝系統依賴 ---
|
21 |
USER root
|
22 |
RUN apk add --no-cache \
|
|
|
24 |
chromium \
|
25 |
procps-ng
|
26 |
|
27 |
+
# --- 安裝 n8n 和 Puppeteer 套件 ---
|
28 |
+
# 關鍵修正:同時安裝 n8n 和 puppeteer
|
29 |
+
RUN npm install -g n8n@${N8N_VERSION} puppeteer --omit=dev
|
30 |
|
31 |
# --- 設定權限 ---
|
32 |
RUN mkdir -p ${N8N_PATH} && \
|
|
|
40 |
EXPOSE 5678
|
41 |
|
42 |
# --- 啟動 n8n 並在日誌中顯示公開網址 ---
|
|
|
43 |
CMD sh -c 'echo "-----------------------------------------------------" && \
|
44 |
echo "n8n is running!" && \
|
45 |
echo "Access it at: https://${SPACE_HOST}" && \
|