защо babel съхранява .babel.json в пътя на USERPROFILE

Изпълнявам приложение nodejs на уеб приложения на azure и се опитвам да интегрирам babel с помощта на npm в него. Проблемът е, че babel се опитва да получи достъп до файл в

%USERPROFILE%

с име .babel.json, файл, който не съществува. Това най-вероятно е инсталирано от:

npm install -g babel

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

Копирах файла в %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=any_writable_and_exist_dir/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 Empty Web app“ и изпълнявам командата npm install -g babel в Kudu. Опитах се да възпроизведа вашия проблем, но не успях, че babel не се опитва да получи достъп до файла .babel.json в %USERPROFILE%.

В Azure глобалните модули npm ще бъдат инсталирани в пътя „D:\local\AppData“. Когато рестартирате WebApp, глобалните модули на възлите ще бъдат изтрити.

Ако трябва да използвате глобалните модули на възел, можете да конфигурирате задача за стартиране за уеб роля на възел, за да инсталирате модули на възел, когато уеб ролята се стартира в Cloud Service. Моля, вижте https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/.

Обикновено се инсталират възлови модули с помощта на npm install <module-name> в пътя "wwwroot" на Kudu Debug Console на 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