如何在 Netlify 上部署 Node.js Express 应用(2024)

Netlify 无法轻松托管 Express Web 应用。希望本指南对您有所帮助。

步骤

  • 按照与下面类似的方式构建您的应用程序:
  • Image description
  • 遵循本指南 https://docs.netlify.com/frameworks/express/ 。我删除了 node_bundler =“esbuild”,因为它引发了 ESM 错误,但一切正常。
  • 创建 netlify.toml 文件时,请保留特定于 API 和您想要通过 Express 提供的任何端点的重定向。一般重定向(即“/*”)会弄乱您的 CDN 和静态文件服务。
  • Image description
  • (可选)使用本地服务器文件进行开发以使事情更加整洁,例如图像:
  • Image description
  • package.json 看起来像这样:“scripts”:{“start”:“node ./functions/server.js”,“build”:“netlify deploy --prod”,“build-dev”:“NODE_ENV=development webpack --mode development --watch”,“dev”:“NODE_ENV=development node server-local.js”,“dev-watch”:“NODE_ENV=development nodemon --exec node server-local.js”,},
  • 编写你的 server.mjs 代码,如下图所示:
  • Image description
  • 在 index.html 和其余 .html 文件中,CSS、JS 和其他资产的路径最好设置为 CDN,以便在开发和生产中都能发挥作用,即:
  • ` `

  • 在控制台上运行 netlify dev 进行部署前测试
  • 主要经验

  • server.js 或 server.mjs 应用程序只能访问 /netlify/functions。除非使用命令在 netlify.toml 文件中明确指定,否则“public”或“dist”或“static”文件夹将不会添加到 netlify 文件夹中
  • [functions]
      included_files = [
        "static/views/**"  # Include all files in static/views for server-side access
      ]
  • Netlify 的 CDN 更适合静态资产,如果你在 netlify.toml 文件中使用以下命令,它将自动发生
  • [build]
      publish = "static"  # Static assets to be served by Netlify's CDN. Folder defaults to public
  • 路由器端点之外的 Console.log 语句不会显示在控制台上。