Azure Webアプリでnodejsアプリを実行していて、npmを使用してbabelを統合しようとしています。問題は、babelがでファイルにアクセスしようとしていることです
%USERPROFILE%
.babel.jsonという名前の、存在しないファイル。これは、次の方法でインストールされる可能性があります。
npm install -g babel
Azure Webアプリでは、まったく見つからないようです(サイトのkuduでnpm install -g babel
を実行した後でも)。
Kuduを使用して%USERPROFILE%
内のファイルを%USERPROFILE%
にコピーしましたが、Webアプリを再起動するとファイルが消えます。
Webアプリでbabelを機能させる方法はありますか?
[〜#〜]更新[〜#〜]
私はいくつかのことを省略しました。 babel/register
をロードしようとするとエラーが発生しました。
require('babel/register')({
optional: ["es7.asyncFunctions"]
});
ストリーミングログに表示される実際のエラーは
アプリケーションがキャッチされない例外をスローし、終了しました:エラー:ENOENT、Object.fsのObject.fs.openSync(fs.js:438:18)にそのようなファイルまたはディレクトリがありません 'D:\ local\UserProfile.babel.json' .writeFileSync(fs.js:977:15)at save(D:\ home\site\wwwroot\node_modules\babel\node_modules\babel-core\lib\api\register\cache.js:35:19)atprocess。 _tickCallback(node.js:419:13)at Function.Module.runMain(module.js:499:11)at起動時(node.js:119:16)at node.js:906:3
プロジェクトはオンです Github
これと同じ問題がありました。アプリケーション設定で環境変数BABEL_DISABLE_CACHE=1
を設定して、babelキャッシュを無効にすることで解決しました。
バベルキャッシュの詳細については、こちらをご覧ください: https://babeljs.io/docs/usage/require/#environment-variables
.babel.json
の保存場所をBABEL_CACHE_PATHで変更します
キャッシュを無効にするよりはましだと思います
BABEL_CACHE_PATH = any_writable_and_exist_dir/babel.cache.json
ロードベイベル/レジスタを試したときにエラーが発生しました。
(..\node_modules\babel\node_modules\babel-core\lib\api\register\Cache.js)にあるCache.jsをチェックして、babelキャッシュパスの定義があるかどうかを確認してください。
process.env.BABEL_CACHE_PATH || _path2["default"].join(_homeOrTmp2["default"], ".babel.json");
この種の変数を利用する場合は、BABEL_CACHE_PATHアプリに./cacheのキーと値を設定する必要があります。そうしないと、Babelを使用したものはAzureで機能しません。 http://blog.syntaxc4.net/post/2012/07/26/accessing-app-settings-configured-in-Microsoft-Azure-web-sites-using-php-and-nodeを参照してください-js.aspx node.jsを使用してAzureWebサイトのアプリ設定にアクセスする方法の詳細を知りたい場合。
ご不明な点がございましたら、お気軽にお問い合わせください。
AzureGallery「NodeJSEmpty Web app」からnodejsアプリを作成し、Kuduでコマンド_npm install -g babel
_を実行します。問題を再現しようとしましたが、babelが%USERPROFILE%のファイル.babel.jsonにアクセスしようとしていないことに失敗しました。
Azureでは、npmグローバルモジュールがパス「D:\ local\AppData」にインストールされます。 WebAppを再起動すると、ノードのグローバルモジュールが削除されます。
ノードグローバルモジュールを使用する必要がある場合は、ノードWebロールの起動タスクを構成して、クラウドサービスでWebロールが起動したときにノードモジュールをインストールできます。 https://Azure.Microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/ を参照してください。
通常、Azure WebAppsのKuduDebug Consoleのパス "wwwroot"で_npm install <module-name>
_を使用してノードモジュールをインストールします。
パス「wwwroot」にbabelモジュールをインストールし、コマンド_node_module\.bin\babel
_を実行し、コードrequire('babel')
を含むファイルを書き込んで正常に実行しようとしました。それはうまくいきます。
宜しくお願いします。