You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vercel Serverless API(TypeScript)出现ERR_MODULE_NOT_FOUND错误求助

Vercel Serverless API 无法导入外部目录模块的问题排查与修复思路

问题概述

基于Vite的Vue3+TypeScript项目,通过Vercel部署Serverless API端点,项目结构将API文件放在api目录,业务逻辑放在同级的backend目录。本地运行正常,但生产部署后api/index.ts无法导入../backend/const.ts,报错ERR_MODULE_NOT_FOUND,已尝试合并目录、更新路径、重新部署、切换Node版本、修改TS target等方法均无效。

修复与调试思路

  • 配置Vercel打包时包含backend目录
    Vercel默认仅部署api、public及前端构建产物目录,backend目录可能未被纳入Serverless函数的打包范围。需在项目根目录创建或修改vercel.json,指定API函数需要包含的额外文件:

    {
      "functions": {
        "api/**/*.ts": {
          "includeFiles": "backend/**/*.ts"
        }
      }
    }
    

    这样Vercel会将backend目录的文件一同打包到函数运行环境中。

  • 确保导入语句使用完整文件后缀
    Node.js的ES模块(ESM)要求导入必须带完整后缀,本地开发时TS工具链可能允许省略,但生产环境的Node严格遵循规则。修改导入语句为编译后的文件后缀(注意是.js而非.ts):

    import { a } from '../backend/const.js';
    
  • 检查TS编译配置的覆盖范围
    确认tsconfig.json的include字段包含backend目录,确保编译时该目录的TS文件被处理:

    {
      "include": ["src/**/*", "api/**/*", "backend/**/*"]
    }
    

    同时检查outDir配置,确保编译后的backend文件位置与API文件的导入路径匹配。

  • 本地模拟Vercel构建环境
    使用Vercel CLI在本地复现生产构建流程,查看打包后的文件结构是否符合预期:

    # 构建项目
    vercel build
    # 本地运行生产环境
    vercel dev
    

    这样可以直接在本地排查backend目录是否被正确打包,以及导入路径是否存在问题。

  • 排查文件名大小写问题
    Vercel运行环境为Linux,严格区分文件名大小写,而本地Windows/macOS默认不区分。确认导入路径中的文件名与实际backend目录下的文件名完全一致(比如const.ts不能写成Const.ts)。

内容的提问来源于stack exchange,提问作者Simone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:10:13