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

Vercel部署Express.js后assetsDash静态目录下.js文件无法访问问题

问题根因

  • Vercel(原Now)平台V2版本的默认构建规则会优先将.js后缀的文件识别为服务端函数处理,不会走你在Express中配置的static静态资源路由
  • 你当前now.json里的{"handle": "filesystem"}规则会优先匹配根目录下的.js文件,要么直接返回404,要么触发函数调用错误,不会转发到index.js的Express服务处理

解决方案

步骤1:调整now.json配置,提升静态资源路由优先级

在路由规则最前面添加静态资源专属匹配规则,同时配置构建规则标记静态资源目录,避免平台把目录内的JS文件识别为服务端函数,修改后的配置如下:

{
    "version": 2,
    "builds": [{
      "src": "./index.js",
      "use": "@now/node-server"
    },
    {
      "src": "dash/assets/**/*",
      "use": "@now/static"
    },
    {
      "src": "landing/assets/**/*",
      "use": "@now/static"
    }],
    "routes": [
      {
        "src": "/assetsDash/(.*)",
        "dest": "/dash/assets/$1"
      },
      {
        "src": "/assetsLanding/(.*)",
        "dest": "/landing/assets/$1"
      },
      {"handle": "filesystem"},
      {
        "src": "/.*",
        "dest": "index.js"
      }
    ]
  }

步骤2:确认静态资源目录被纳入构建产物

检查项目根目录的.gitignore和.vercelignore文件,不要把dash/、landing/目录排除在构建上传范围之外。

步骤3(可选优化)

可以直接删除Express代码中app.use开头的两条静态资源配置,所有静态资源访问完全交给Vercel平台的路由规则处理,避免服务端路由和平台路由产生冲突。

修改后重新部署即可正常加载.js格式的静态资源,其他格式资源的访问逻辑不会受到影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:54:02