在 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 项目,但我仍然有相同的行为
回顾一下我们讨论的所有内容:
- web config只与IIS有关。 NodeJS 与它无关;
- 你应该 运行 "npm 运行 build" 并只发布 "dist" 文件夹中的文件。这将在根目录中生成一个 index.js 文件,该文件是节点为了 运行 您的应用程序而查找的文件。 .ts 文件不应在生产环境中执行;
- 在 Azure 上的“应用程序设置”中添加必要的环境变量。这将填充您的应用程序需要 运行.
的变量
- 您可能应该将变量 PORT 设置为 80,因为 Azure 可能希望 运行 您的应用程序在端口 80 上;
好吧,我找到了一个解决方案,可能不会让有麻烦的人满意。
对我有用的是离开 Azure 转到 Heroku,它在几分钟内就开始工作,但也更容易使用(至少对我而言)。
我发现了一个很好的教程:
https://medium.com/developer-rants/deploying-typescript-node-js-applications-to-heroku-81dd75424ce0
我正尝试按照本教程在 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 项目,但我仍然有相同的行为
回顾一下我们讨论的所有内容:
- web config只与IIS有关。 NodeJS 与它无关;
- 你应该 运行 "npm 运行 build" 并只发布 "dist" 文件夹中的文件。这将在根目录中生成一个 index.js 文件,该文件是节点为了 运行 您的应用程序而查找的文件。 .ts 文件不应在生产环境中执行;
- 在 Azure 上的“应用程序设置”中添加必要的环境变量。这将填充您的应用程序需要 运行. 的变量
- 您可能应该将变量 PORT 设置为 80,因为 Azure 可能希望 运行 您的应用程序在端口 80 上;
好吧,我找到了一个解决方案,可能不会让有麻烦的人满意。
对我有用的是离开 Azure 转到 Heroku,它在几分钟内就开始工作,但也更容易使用(至少对我而言)。
我发现了一个很好的教程: https://medium.com/developer-rants/deploying-typescript-node-js-applications-to-heroku-81dd75424ce0