Azure Web App和Typescript:“您没有查看此目录或页面的权限,”

bt1cpqcv  于 2023-08-07  发布在  TypeScript
关注(0)|答案(1)|浏览(94)

我通过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>

lg40wkob

lg40wkob1#

  • 我在我的本地通过使用终端中所需的命令创建了Node.js Express应用程序。它在我的本地成功运行。
  • 我在Visualstudio2019、Visual studio2022中遇到了部署问题。所以,我在Visual Studio代码中尝试。
  • 在Azure中创建Web应用程序


的数据

  • 我已经成功地将Express应用程序部署到Azure中的Web应用程序中。检查下面给出的。

当我运行Web应用程序时,我也得到了同样的错误。检查下面的附加图像。


  • 下面是我的文件结构路径。


  • 在我将新的应用程序设置添加到我的Web应用程序后,它成功运行。
  • SCM_DO_BUILD_DURING_DEPLOYMENT这被称为True
    检查下面:

相关问题