2017-02-24 4 views
0

Azure App ServiceのサブディレクトリでNode appを実行しようとすると、奇妙な問題が発生します。App ServiceのサブディレクトリからNode appを実行しようとするとserver.jsファイルが返される

私のディレクトリ構造は次のとおりです。

|common 
    -- common_model.js 
|client 
    -- angular 2 app js files 
|server 
    -- server.js with other express app files 
|web.config 

私はサーバー\ server.jsファイルにすべての要求を指すようにweb.configファイルを設定した:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<system.webServer> 
    <webSocket enabled="false" /> 
    <handlers> 
    <add name="iisnode" path="server\server.js" verb="*" modules="iisnode"/> 
    </handlers> 
    <rewrite> 
    <rules> 
     <rule name="DynamicContent"> 
     <conditions> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/> 
     </conditions> 
     <action type="Rewrite" url="server\server.js"/> 
     </rule> 
    </rules> 
    </rewrite> 
    <security> 
    <requestFiltering> 
     <hiddenSegments> 
     <remove segment="bin"/> 
     <add segment="node_modules" /> 
     </hiddenSegments> 
    </requestFiltering> 
    </security> 
    <httpErrors existingResponse="PassThrough" /> 
    <iisnode watchedFiles="web.config;*.js"/> 
</system.webServer> 
</configuration> 

サイトをロードする場合ブラウザでは、server.jsのコンテンツが返され、実行されません。これを実行するように設定されたiisnodeハンドラ以外に必要なものは何ですか?パスの設定にもかかわらず

答えて

0

<add name="iisnode" path="server\server.js" verb="*" modules="iisnode"/>

iisnodeモジュールは、ルートにserver.jsファイルでのみ機能するように見えます。解決策は幸運にも簡単ですが、単にサブディレクトリファイルを含むルートにserver.jsファイルを作成するだけです。

<add name="iisnode" path="server.js" verb="*" modules="iisnode"/>

require("./server/server.js");

はその後、デフォルトのiisnodeハンドラを使用することができます。ファイル全体が1行です

関連する問題