Почему babel хранит .babel.json в пути USERPROFILE

Я запускаю приложение nodejs на лазурных веб-приложениях, и я пытаюсь интегрировать babel, используя npm в нем. Проблема в том, что babel пытается получить файл в

% USERPROFILE%

named.babel.json, файл, который не существует. Скорее всего, это установлено:

npm install -g babel

В лазурных веб-приложениях я не могу найти его вообще (даже после запуска npm install -g babel в kudu для сайта).

Я скопировал файл в %USERPROFILE% себя на %USERPROFILE% с помощью kudu, но при перезагрузке веб-приложения файл пропадает.

Есть ли способ заставить Babel работать в веб-приложениях?

UPDATE

Я опускал некоторые вещи. Ошибка возникла, когда я попробовал загрузить babel/register.

require('babel/register')({
  optional: ["es7.asyncFunctions"]
});

и фактическая ошибка, которую я вижу в потоковых журналах, составляет

Приложение выбрало исключение и прекращено: Ошибка: ENOENT, нет такого файла или каталога 'D:\local\UserProfile.babel.json'     в Object.fs.openSync(fs.js: 438: 18)     в Object.fs.writeFileSync(fs.js: 977: 15)     при сохранении (D:\home\site\wwwroot\ node_modules\babel\node_modules\babel-core\lib\api\register\cache.js: 35: 19)     на process._tickCallback (node.js: 419: 13)     в Function.Module.runMain(module.js: 499: 11)     при запуске (node.js: 119: 16)     при node.js: 906: 3

проект находится на Github

Ответ 1

У меня была такая же проблема, она была решена, отключив кеш-память, установив переменную окружения BABEL_DISABLE_CACHE=1 в мои настройки приложения.

Подробнее о кэше буфера можно прочитать здесь: https://babeljs.io/docs/usage/require/#environment-variables

Ответ 2

Ошибка возникла, когда я попробовал загрузить babel/register.

Пожалуйста, проверьте Cache.js на (..\ node_modules\babel\node_modules\babel-core\lib\api\register\Cache.js), чтобы узнать, существует ли какое-либо определение пути кэширования бабеля, например.

process.env.BABEL_CACHE_PATH || _path2["default"].join(_homeOrTmp2["default"], ".babel.json");

Если вы используете такой тип переменных, ему нужно иметь ключ установки приложения BABEL_CACHE_PATH и значение. /cache, иначе ничего с babel не будет работать на лазурном. Пожалуйста, обратитесь к http://blog.syntaxc4.net/post/2012/07/26/accessing-app-settings-configured-in-microsoft-azure-web-sites-using-php-and-node-js.aspx, если вы хотите узнать подробности доступа к настройкам приложения на веб-сайте Azure с помощью node.js.

Если у вас есть какие-либо дальнейшие заботы, пожалуйста, сообщите нам об этом.

Ответ 3

Вы меняете местоположение магазина .babel.json на BABEL_CACHE_PATH

Я думаю, что это лучше, чем отключить кеширование

BABEL_CACHE_PATH = any_writable_and_exist_dir/babel.cache.json

Ответ 4

Я создаю приложение nodejs из галереи Azure "Node JS Empty Web app" и запустил команду npm install -g babel в Kudu. Я попытался воспроизвести вашу проблему, но не смог, что babel не пытается получить доступ к файлу .babel.json в% USERPROFILE%.

В Azure глобальные модули npm будут установлены в путь "D:\local\AppData". При перезапуске WebApp глобальные модули node будут удалены.

Если вам нужно использовать глобальные модули node, вы можете настроить задачу запуска для веб-роли node для установки модулей node при запуске веб-роли в облачном сервисе. См. https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/.

Обычно устанавливаются модули node с помощью npm install <module-name> на пути "wwwroot" консоли Kudu Debug Console в Azure Web Apps.

Я попытался установить модуль babel на путь "wwwroot" и запустить команду node_module\.bin\babel, и записать файл с кодом require('babel'), чтобы запустить его успешно. Он отлично работает.

С наилучшими пожеланиями.