在 Azure 上使用 Typescript 部署 Express 应用

Deploy Express app with Typescript on Azure

我正尝试按照本教程在 Azure 上的 Typescript 上部署一个 Express 服务器: https://docs.microsoft.com/en-us/azure/app-service/quickstart-nodejs?tabs=windows&pivots=development-environment-vscode

这是一个虚拟应用程序,在 index.ts 文件中有一个简单的 Hello World。但是我遇到了很多问题。

这是我浏览网站时收到的消息: “您没有查看此目录或页面的权限。”

当我尝试查看已部署的文件夹时,得到的结果如下

所以没有 web.config 文件。然而,“SCM_DO_BUILD_DURING_DEPLOYMENT”参数设置为 true 并且应该生成它。

这是我的 package.json

{
  "name": "test-azure-3",
  "version": "1.0.0",
  "description": "",
  "main": "dist/index.js",
  "scripts": {
    "prebuild": "tslint -c tslint.json -p tsconfig.json --fix",
    "build": "tsc",
    "prestart": "npm run build",
    "start": "node .",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.2"
  },
  "devDependencies": {
    "@types/express": "^4.17.13",
    "@types/node": "^17.0.14",
    "tslint": "^6.1.3",
    "typescript": "^4.5.5"
  }
}

还有我在 Azure 中的设置:

(看到 .Net 作为堆栈有点惊讶)

欢迎随时询问更多信息!

编辑:正如 Felipe 所提到的,我还为 dist 文件夹创建了一个特定的 Azure 项目,但我仍然有相同的行为

回顾一下我们讨论的所有内容:

  1. web config只与IIS有关。 NodeJS 与它无关;
  2. 你应该 运行 "npm 运行 build" 并只发布 "dist" 文件夹中的文件。这将在根目录中生成一个 index.js 文件,该文件是节点为了 运行 您的应用程序而查找的文件。 .ts 文件不应在生产环境中执行;
  3. 在 Azure 上的“应用程序设置”中添加必要的环境变量。这将填充您的应用程序需要 运行.
  4. 的变量
  5. 您可能应该将变量 PORT 设置为 80,因为 Azure 可能希望 运行 您的应用程序在端口 80 上;

好吧,我找到了一个解决方案,可能不会让有麻烦的人满意。

对我有用的是离开 Azure 转到 Heroku,它在几分钟内就开始工作,但也更容易使用(至少对我而言)。

我发现了一个很好的教程: https://medium.com/developer-rants/deploying-typescript-node-js-applications-to-heroku-81dd75424ce0