Vercel 上的 Node Express + TypeScript 部署未构建

Gia*_*vez 5 build node.js express typescript vercel

我已经使用 Express + TypeScript 上传了带有节点的项目。此应用程序生成一个dist用于构建的文件夹,但当 vercel 部署我的应用程序时,它不会运行命令构建,因此我为部署我的应用程序所做的就是在本地构建并上传此dist文件夹。这是我的 vercel.json

{
    "version": 2,
    "buildCommand": "yarn build",
    "devCommand": "yarn dev",
    "outputDirectory": "dist",
    "builds": [
        {
            "src": "dist/index.js",
            "use": "@vercel/node"
        }
      ],
    "routes": [
        {
            "src": "/(.*)",
            "dest": "dist/index.js"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

小智 -1

您是否在 package.json 的脚本标记中提供了“build”:“tsc”?

   "build":"tsc",
   "start": "node dist/server.js",
Run Code Online (Sandbox Code Playgroud)

但是,我还没有使用 TS 应用程序构建我的 Express 并将其部署在 vercel 中。您只需在 vercel 中安装一次 typescript 即可运行expressTS 应用程序,而无需编译/构建它。

   vercel.json
        {
          "version": 2,
            "builds": [
              {
                "src": "./server.ts",   // server.ts is in root
                "use": "@vercel/node"
              }
            ],
            "routes": [
              {
                "src": "/.*",
                "dest": "server.ts"
              }
            ]
          }
Run Code Online (Sandbox Code Playgroud)

包.json

{
  "name": "server",
  "version": "1.0.0",
  "description": "MERN App",
  "main": "server.ts",
  "scripts": {
    "start": "node server.ts",
    "server": "ts-node ./server.ts",
    "client": "cd ./ && npm start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\""
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cors": "^2.8.5",
    "dotenv": "^16.0.3",
    "express": "^4.18.2",
    "mongoose": "^6.7.2"
  },
  "devDependencies": {
    "@types/cors": "^2.8.12",
    "@types/express": "^4.17.14",
    "concurrently": "^7.5.0",
    "ts-node": "^10.9.1"
  }
}
Run Code Online (Sandbox Code Playgroud)