我通过VS 19将一个用Typescript编写的NodeJS服务器部署到Azure Web App,该项目在内部工作,但在发布到Azure时返回权限问题。
此项目使用的基本模板是VS 19中提供的“Basic Azure Node.js Express 4 Application”。
据我所知,Azure使用IIS以Azure Web App的形式托管Typescript应用程序,因此它需要一个web.config文件,下面也提供了该文件。
我只是将“app.js”修改为“index.js”,这是我的应用程序主源文件的名称。
目前,当访问Kudu Web应用程序shell时,我可以看到Typescript编译的输出在:
|-wwwroot
|---dist
|-----src
|--------index.js
|--------index.js.map
|--------environments
|--------middlewares
...
字符串
实际上,index.js和index.js.map通常应该与src处于相同的lvl。
无论如何,我已经修改了Azure Web App的配置,将其根虚拟路径重定向到:网址\wwwroot\dist\src.
x1c 0d1x的数据
如果没有此更改,应用程序将返回:您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。
相反,现在它至少可以尝试访问它,但我被拒绝了,权限问题的形式是:“您没有权限查看此目录或页面。"
我应该更改web.config吗?关于如何做到这一点,以及这是否真的是正确的方向,我只有很少的文档/信息。
文件夹结构如下所示:
的
tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es5",
"outDir": "./dist",
"baseUrl": ".",
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules"
]
}
型
package.json(排除所有依赖):
{
"name": "projet",
"version": "1.0.0",
"description": "Backend",
"main": "index.js",
"scripts": {
"test": "jest --verbose",
"test-watch": "jest --verbose --watchAll",
"dev": "nodemon --watch src -e js,ts,json --exec \"ts-node src/index.ts\"",
"build": "tsc --build",
"clean": "tsc --build --clean"
},
"repository": {
"type": "git",
"url": ""
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": ""
},
"homepage": "",
"devDependencies": {
"@types/cors": "^2.8.13",
"@types/express": "^4.17.17",
"@types/jest": "^28.1.8",
...
}
}
型
web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
</appSettings>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>
<modules runAllManagedModulesForAllRequests="false" />
<iisnode watchedFiles="web.config;*.js;routes\*.js;views\*.pug"/>
<handlers>
<add name="iisnode" path="index.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<clear />
<rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
<match url="iisnode.+" negate="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="index.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
型
1条答案
按热度按时间lg40wkob1#
的数据
的
当我运行Web应用程序时,我也得到了同样的错误。检查下面的附加图像。
的
的
SCM_DO_BUILD_DURING_DEPLOYMENT
这被称为True
。检查下面: