Visual StudioでNode.jsアプリをAzure App Serviceにデプロイしようとすると”web.config not found in project, to create a project to deploy to Microsoft Azure you must create an Azure Node.js project.”エラーが発生する

こんにちは、今日は普段あまり使わないVisual Studioを使っていてつまづいたことがありましたので、この記事にまとめておきます。

問題

Visual Studioで作成したNode.js WebアプリケーションをAzure App Serviceにデプロイしようとすると、”web.config not found in project, to create a project to deploy to Microsoft Azure you must create an Azure Node.js project.”エラーが発生しました。

ちなみに、プロジェクトは、以下の通り、”空のNode.js Webアプリケーション”として作成した規定の状態でした。

画像に alt 属性が指定されていません。ファイル名: image-73-1024x678.png

原因と解決方法

エラー文言の通り、Azure Node.jsプロジェクトの形式でプロジェクトを構成しておく必要があるようです。これを実現するには、プロジェクト作成の段階で、”空のAzure Node.js Webアプリケーション”を選択するのが一番簡単な方法だと思います。

このオプションと、「空のNode.js Webアプリケーション」で作成した場合では、構成の何が違うのでしょうか。

見比べてみました。

<Azureプロジェクトの場合>

・確かに、Web.configがあります。

Web.configの内容は以下

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your Node.js application, please visit
  http://go.microsoft.com/fwlink/?LinkId=290972
  -->
<configuration>
  <appSettings>

    <!--
    <add key="StorageAccountName" value="" />
    <add key="StorageAccountKey" value="" />
    <add key="ServiceBusNamespace" value="" />
    <add key="ServiceBusIssuerName" value="" />
    <add key="ServiceBusIssuerSecretKey" value="" />
    -->
  </appSettings>
  <system.webServer>
    <!-- mimeMap enables IIS to serve particular file types as specified by fileExtension. -->
    <staticContent>
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
    </staticContent>

    <modules runAllManagedModulesForAllRequests="false" />

    <!-- Web.Debug.config adds attributes to this to enable remote debugging when publishing in Debug configuration. -->
    <iisnode watchedFiles="web.config;*.js"/>

    <!-- Remote debugging (Azure Website with git deploy): Comment out iisnode above, and uncomment iisnode below. -->
    <!--<iisnode watchedFiles="web.config;*.js" 
      loggingEnabled="true" 
      devErrorsEnabled="true" 
      nodeProcessCommandLine="node.exe &#45;&#45;debug"/>-->

    <!-- indicates that the server.js file is a Node.js application 
    to be handled by the iisnode module -->
    <handlers>
      <add name="iisnode" path="server.js" verb="*" modules="iisnode" />

      <!-- Remote debugging (Azure Website with git deploy): Uncomment NtvsDebugProxy handler below. 
      Additionally copy Microsoft.NodejsTools.WebRole to 'bin' from the Remote Debug Proxy folder.-->
      <!--<add name="NtvsDebugProxy" path="ntvs-debug-proxy/ebfd5445-1735-4fdf-9395-a04aee7df6cd" verb="*" resourceType="Unspecified" 
        type="Microsoft.NodejsTools.Debugger.WebSocketProxy, Microsoft.NodejsTools.WebRole"/>-->
    </handlers>
    <rewrite>
      <rules>
        <clear />
        <!-- Remote debugging (Azure Website with git deploy): Uncomment the NtvsDebugProxy rule below. -->
        <!--<rule name="NtvsDebugProxy" enabled="true" stopProcessing="true"> 
          <match url="^ntvs-debug-proxy/.*"/> 
        </rule>-->

        <!-- Don't interfere with requests for node-inspector debugging -->
        <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="^server.js\/debug[\/]?" />
        </rule>

        <rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="iisnode.+" negate="true" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
          <action type="Rewrite" url="server.js" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

  <!-- Remote debugging (Azure Website with git deploy): uncomment system.web below -->
  <!--<system.web> 
    <httpRuntime targetFramework="4.5"/> 
    <customErrors mode="Off"/> 
  </system.web>-->
</configuration>

<Azureプロジェクトじゃない場合>

・確かに、Web.configがない。

Web.configはIISの構成ファイルなのですが、おそらくWindowsのAzure App ServiceはWeb ServerとしてIISを利用しているために、必要なのでしょうね・・・。

ちょっとややこしい・・・

でも、解決はできたのでとりあえず良かった。

おしまい!

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

Yuu113
初めまして。Yuu113と申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。