web-dev-qa-db-ja.com

babelがUSERPROFILEパスに.babel.jsonを保存する理由

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

11
Alex

これと同じ問題がありました。アプリケーション設定で環境変数BABEL_DISABLE_CACHE=1を設定して、babelキャッシュを無効にすることで解決しました。

バベルキャッシュの詳細については、こちらをご覧ください: https://babeljs.io/docs/usage/require/#environment-variables

17
user1113977

.babel.jsonの保存場所をBABEL_CACHE_PATHで変更します

キャッシュを無効にするよりはましだと思います

BABEL_CACHE_PATH = any_writable_and_exist_dir/babel.cache.json

3
Ali.MD

ロードベイベル/レジスタを試したときにエラーが発生しました。

(..\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サイトのアプリ設定にアクセスする方法の詳細を知りたい場合。

ご不明な点がございましたら、お気軽にお問い合わせください。

3
Ming Xu - MSFT

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')を含むファイルを書き込んで正常に実行しようとしました。それはうまくいきます。

宜しくお願いします。

0
Peter Pan