描述問題/錯誤/問題
我在使用 2.33.4 自主託管版本。使用 require('xlsx') 的程式碼節點失敗,出現 Cannot find module 'xlsx' 錯誤。這在我最後一次更新前是可以運作的,更新時間大約在 2026 年 6 月 27–28 日 — 我執行的是 n8nio/n8n:latest 標籤,所以我不再擁有舊版本號,舊映像也已刪除。
NODE_FUNCTION_ALLOW_EXTERNAL=xlsx 一直都有設定,在更新前就可以運作。 該環境變數的歷史比更新早得多,在更新期間沒有更改,現在仍然設定著。唯一改變的是 n8n 版本。
錯誤訊息是什麼(如有)?
Cannot find module 'xlsx'
請分享您的工作流程
{
"nodes": [
{
"parameters": {
"authentication": "n8nUserAuth",
"formTitle": "Upload",
"formFields": {
"values": [
{
"fieldLabel": "File",
"fieldType": "file"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.6,
"position": [
0,
0
],
"id": "524e6956-6083-4818-80f9-0b7680c5831c",
"name": "On form submission",
"webhookId": "bd5787ae-7a59-47ca-913b-a917c7cc56b1"
},
{
"parameters": {
"jsCode": "// ─── n8n-native way (preferred) ───\nconst { read: xlsxRead, utils: xlsxUtils } = require('xlsx');\n\nconst buffer = await this.helpers.getBinaryDataBuffer(0, 'data');\nconst workbook = xlsxRead(buffer, { type: 'buffer' });\n\nreturn workbook.SheetNames.map((name) => {\n const sheet = workbook.Sheets[name];\n const range = sheet['!ref'] ? xlsxUtils.decode_range(sheet['!ref']) : null;\n const rowCount = range ? range.e.r - range.s.r + 1 : 0;\n return { json: { name, rowCount } };\n});"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
224,
0
],
"id": "014fef67-9f74-4d59-bcf3-35b230fe807a",
"name": "Extract Sheet Names"
}
],
"connections": {
"On form submission": {
"main": [
[
{
"node": "Extract Sheet Names",
"type": "main",
"index": 0
}
]
]
}
],
"pinData": {},
"meta": {
"instanceId": "15ab9a4479ee136cd46352ea8c0166f2b06c66d06e5800486f6e9654739ded93"
}
}
分享最後一個節點返回的輸出
{"errorMessage":"Cannot find module 'xlsx'\nRequire stack:\n- /usr/local/lib/node_modules/n8n/node_modules/.pnpm/+task-runner@file+packages++task-runner_@opentelemetryopentelemet@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8cy+api@1.9.0_@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8c/node_modules//task-runner/dist/js-task-runner/require-resolver.js\n- /usr/local/lib/node_modules/n8n/no@opentelemetrye_modules/.@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8cnpm/+task-runner@file+packages++task-runner_@opentelemetry+api@1.9.0_@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8c/node_modules//task-runner/dist/js-task-@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8cunner.js\n- /usr/local/lib/node_modules/n8n/node_modules/.pnpm/+task-runner@file+packages++task-runner_@opentelemetry+api@1.9.0_@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8c/node_modules//task-runner/dist/start.js","errorDetails":{},"n8nDetails":{"n8nVersion":"2.33.4 (Cloud)","binaryDataMode":"fi@opentelemetryesystem","@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8ctackTrace":["Error: Cannot find module 'xlsx'","Require stack:","- /usr/local/lib/node_modules/n8n/node_modules/.pnpm/+task-runner@file+packages++task-runner_@o@opentelemetryentelemetry@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8capi@1.9.0_@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8c/node_modules//task-runner/dist/js-task-runner/require-resolver.js","- /usr/local/lib/node_modules/n8n/no@opentelemetrye_modules/.@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8cnpm/+task-runner@file+packages++task-runner_@opentelemetry+api@1.9.0_@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8c/node_modules//task-runner/dist/js-task-runner/js-task-runner.js","- /usr/local/lib/node_modules/n8n/node_modules/.pnpm/+task-runner@file+packages++task-runner_@opentelemetry+api@1.9.0_@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8c/node_modules//task-runner/dist/start.js"," at Module.resolveFilename (node:internal/modules/cjs/loader:1517:15)"," at wrapResolveFilename (node:internal/modules/cjs/loader:1071:27)"," at defaultResolveImplForCJSLoading (node:internal/modules/cjs/loader:1095:10)"," at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1122:12)"," @opentelemetry at Module.load (node:internal/modules/cjs/loader:1294:5)"," at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)"," at Module.require (node:internal/modules/cjs/loader:1617:12)"," at require (node:internal/modules/helpers:153:16)"," at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/+task-runner@file+packages++task-runner@opentelemetry+api@1.9.0@opentelemetry_f4c4f0962cb44afa934cbd57e3ebca8c/node_modules//task-runner/dist/js-task-runner/require-resolver.js:68:26"," at VmCodeWrapper (evalmachine.:2:46)"]}}
關於您的 n8n 設定的資訊
- n8n 版本: 2.33.4
- 資料庫(預設:SQLite): PostgreSQL
- n8n EXECUTIONS_PROCESS 設定(預設:own, main): main
- 執行 n8n 的方式(Docker、npm、n8n cloud、桌面應用): Docker
- 作業系統: Ubuntu 24.04