Vercel CLI本地调试无服务器函数触发ERR_UNSUPPORTED_ESM_URL_SCHEME错误
这个问题是Windows系统下Node.js ESM加载规则和旧版Vercel CLI的路径处理逻辑不兼容导致的:Vercel CLI加载本地ESM格式的无服务器函数时,直接将Windows系统C:\开头的绝对路径传入动态导入方法import(),没有转换为符合ESM规范的file://协议URL,因此触发了ERR_UNSUPPORTED_ESM_URL_SCHEME报错,线上Vercel环境是Linux系统,不存在路径协议问题所以运行正常。
你可以按以下顺序尝试解决:
- 优先升级Vercel CLI到最新版本,官方已经在后续版本修复了Windows下的路径兼容问题,执行命令:
升级完成后重新执行npm update -g vercelvercel dev启动本地服务测试即可,绝大多数情况升级后问题会直接解决。 - 如果升级后仍然报错,可以给Node.js添加启动参数兼容路径处理,Windows环境下在项目根目录新建
dev.bat文件,写入以下内容后直接运行该文件启动服务:set NODE_OPTIONS=--experimental-specifier-resolution=node && vercel dev - 临时调试也可以将API文件从ESM格式改为CommonJS格式:把文件中的
import语句替换为require,export语句替换为module.exports,本地调试完成后再改回ESM格式即可,线上Vercel环境对两种格式都能正常兼容。
另外请确认本地Node.js版本在14.13.0以上,建议升级到16.x或18.x的LTS版本,低版本Node.js本身对ESM的支持存在缺陷也可能触发该问题。
内容的提问来源于stack exchange,提问作者chillin
相关产品推荐
相关产品推荐

