2016-10-26 10 views
0

私は、ローカルのgitデプロイメントを使用して、ノードアプリケーションをAzureにデプロイします。私はステージング環境(Azureでも)で問題なく作業しており、現在はプロダクション環境を構築しています。すべてのJSファイルが開かれてAzureに保存されるまでエラーをスローする

アプリに関連するすべてのファイルがエラーをスローしますが、私のFTPクライアントでそのファイルを開き、変更せずに保存すると、その特定のファイルのエラーは消え、次のファイルが使用されますエラーを投げます。

私が取った手順はこうです:

展開を実行し、ブラウザを更新します。

は、変更を加えることなく、FTPクライアントでUnexpected token ILLEGAL on server.js line 1

保存server.jsのようなエラーを取得します。

アプリを再起動し、ブラウザを更新します。

server.jsは今変更を加えることなく、FTPクライアントに保存node_modules/express/index.js:11./lib/expressが間違いである)

を何ら問題はありませんが、それは必要で最初のファイル、表現、node_modules/express/index.js:11にエラーcannot find module ./lib/expressを与えます。

アプリを再起動し、ブラウザを更新します。

今、node_modules/express/index.jsは全く問題はありませんが、それは必要で最初のファイル、./lib/expressはエラー得られます:node_modules/lib/express.js:16

cannot find module merge-descriptorsを私はそこに停止されますが、実際の生活の中で私が継続し、動作が一貫して進行中です - 各ファイルは、FTPクライアントに保存されるまで、最初に試行したときにエラーが発生します。

私はコードを変更しなくてもUnexpected token ILLEGAL on server.js line 1でアプリを20分間そのまま残して戻ってきました。私は各ファイルを保存しようとしましたが、基本的に上記の手順を繰り返して、同じ結果を得ました。

私は完全に立ち往生していて、次にコードベースのすべてのファイルを保存するのに何が足りないのか分かりません。ここで何が起こっているのか、問題をデバッグしてどのように進めることができるのでしょうか?

答えて

1

ほとんどの場合、ファイルの先頭にByte-Order-Markがあります。

あなたが検出し、現在のディレクトリ内のすべてのファイルのためにこれを削除する方法を示しているシンプルなgist by Domenic Denicolaあり:Azureのサポートに連絡をされた後

var fs = require("fs"); 
var path = require("path"); 
var wrench = require("wrench"); 

var BOM_CHAR_CODE = 65279; 
var BOM = String.fromCharCode(BOM_CHAR_CODE); 

var fileNames = wrench.readdirSyncRecursive(process.cwd()).filter(function (fileName) { 
    return path.extname(fileName) === ".js"; 
}); 

fileNames.forEach(function (fileName) { 
    fs.readFile(fileName, "utf8", function (err, fileContents) { 
     if (err) { throw err; } 

     if (fileContents.charCodeAt(0) !== BOM_CHAR_CODE) { 
      fs.writeFile(fileName, BOM + fileContents, "utf8", function (err) { 
       if (err) { throw err; } 
      }); 
     } 
    }); 
}); 
+0

これを実行すると、「エラー:EMFILE:開いているファイルが多すぎます」というメッセージが表示されます。私は一度に開いているファイルの数を制限しようとする可能性がありますが、それはちょうどうまくいくはずです - 私たちの他のAzure環境ではうまくいきますし、すべてのデプロイメントでそのスクリプトを実行したくないので、 Azureと一緒にサポートチケットを開くつもりです。提案していただきありがとうございます。 –

0

、それは問題はWEBSITE_DYNAMIC_CACHEによるものであったが判明します0ではなく1に設定されています。この機能は、紺碧のポータルでは表示されず、「開発中で、現在プライベートプレビューになっています。私が遭遇した問題は、WEBSITE_DYNAMIC_CACHEとノードの既知のバグです。

どのように/最初に1に設定されたのかまだわかりませんが、修正されているので、今は気にしません。

楽しい一日!

関連する問題