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

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

%ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ%

с именем .babel.json, несуществующий файл. Это, скорее всего, установлено:

npm install -g babel

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

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

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

ОБНОВЛЕНИЕ

Я упустил некоторые вещи. Ошибка появилась, когда я попытался загрузить 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) в процессе. _tickCallback (node.js:419:13) в Function.Module.runMain (module.js:499:11) при запуске (node.js:119:16) в node.js:906:3

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


person Alex    schedule 24.09.2015    source источник
comment
Попробуйте запустить команду npm install --save-dev babel-core. Параметр -g для npm установит пакет в глобальный путь для модулей узла. В Azure путь защищен.   -  person Peter Pan    schedule 24.09.2015
comment
@Badescu, из-за того, что эту проблему трудно воспроизвести в моей среде, не могли бы вы поделиться с нами информацией о своем веб-сайте, используя подход, указанный на github.com/projectkudu/kudu/wiki/ ?   -  person Will Shao - MSFT    schedule 13.10.2015


Ответы (4)


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

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

person user1113977    schedule 01.12.2015
comment
имеет ли значение, если вы установите это до или после требования babel-polyfill? - person es3735746; 01.03.2017
comment
Я новичок в этом... где я могу найти настройки приложения? - person sharataka; 20.12.2018

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

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

BABEL_CACHE_PATH=любой_доступный_для_записи_и_существующий_каталог/babel.cache.json

person Ali.MD    schedule 22.05.2016

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

Пожалуйста, проверьте Cache.js в (..\node_modules\babel\node_modules\babel-core\lib\api\register\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, если вы хотите узнать подробности доступа к настройкам приложения на веб-сайте Azure с помощью node.js.

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

person Ming Xu - MSFT    schedule 14.10.2015

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

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

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

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

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

С уважением.

person Peter Pan    schedule 25.09.2015
comment
Спасибо за ответ Петр. Я упустил некоторые вещи. я ОБНОВИЛ свой вопрос. Проблема вполне может быть не в глобальных модулях, это было предположение, которое я сделал. Я создал тестовый проект и снова воспроизвел его с помощью Git deploy. Я загрузил его на github.com/badescuga/testbabelrequire. - person Alex; 25.09.2015
comment
@BadescuAlexandru Я установил модуль Babel с помощью команды npm install babel (не babel-core) по пути wwwroot в Kudu. Я попытался воспроизвести вашу проблему, когда узел запускает файл сценария js с загрузкой babel/register по тому же пути wwwroot, но никаких ожиданий не произошло. Ваша проблема может быть вызвана установленным вами модулем babel-core. Можете ли вы проверить каталог node_modules? - person Peter Pan; 28.09.2015
comment
я проверил и получил babel. Странно, что у тебя нет проблем. Вы уверены, что выполняете server.js? Вы видите какой-нибудь .babel.json в D:\local\UserProfile? Обратите внимание, что для развертывания я использовал git (поэтому kudu сделал для меня компиляцию) - person Alex; 28.09.2015