Netlify部署Puppeteer函数失败:无法获取chromium.executablePath
问题解决:Netlify无服务器函数中Puppeteer启动报错TypeError
问题概述
部署到Netlify的Puppeteer无服务器函数触发崩溃,错误信息如下:
TypeError - The "file" argument must be of type string. Received function executablePath
错误栈指向函数启动时executablePath参数类型非法,本地运行正常但云端执行失败。
根本原因
从你输出的chromium.executablePath内容可以明确:它是一个异步方法(函数),而非直接返回路径的属性。你代码中await chromium.executablePath的写法没有调用该方法,得到的是函数本身而非解析后的路径字符串,导致Puppeteer无法识别正确的浏览器可执行文件路径。
修复方案
修改代码中executablePath的赋值逻辑,显式调用chromium.executablePath()方法(注意添加括号):
const chromium = require("@sparticuz/chromium"); const puppeteer = require('puppeteer-core'); chromium.setHeadlessMode = true; chromium.setGraphicsMode = false; exports.handler = async function (event, context) { // 先调用executablePath方法获取有效路径 const chromeExecPath = process.env.CHROME_EXECUTABLE_PATH || await chromium.executablePath(); const browser = await puppeteer.launch({ args: chromium.args, defaultViewport: chromium.defaultViewport, executablePath: chromeExecPath, headless: chromium.headless, }); await browser.close(); return { statusCode: 200, body: JSON.stringify({ status: "The 'Element' function works!" }) }; }
补充说明
本地环境可能因缓存或依赖版本特性,意外兼容了错误写法,但云端环境严格遵循语法要求,必须通过调用方法才能正确获取Chromium二进制文件的路径。
内容的提问来源于stack exchange,提问作者Igor Savinkin
相关产品推荐
相关产品推荐

