2015-09-24 11 views
10

Używam aplikacji nodejs na aplikacjach internetowych Azure i staram się zintegrować Babel za pomocą npm w nim. Problem polega na tym, że Babel próbuje uzyskać dostęp do pliku pod pod nazwą .babel.json, pliku, który nie istnieje. Jest to najprawdopodobniej zainstalowany przez:dlaczego babel przechowuje .babel.json w USERPROFILE ścieżce

npm install -g babel 

Na lazurowych aplikacji internetowych, nie wydaje się go znaleźć w ogóle (nawet po uruchomieniu npm install -g babel w kudu na miejscu).

Ja sam skopiowałem plik z %USERPROFILE% do %USERPROFILE% używając kudu, ale po ponownym uruchomieniu aplikacji internetowej plik znika.

Czy istnieje sposób, aby babel działał w aplikacjach internetowych?

UPDATE

zrobiłem pominąć pewne rzeczy. Błąd pojawił się, gdy próbowałem załadować babel/register.

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

i rzeczywisty błąd widzę w logach strumieniowych jest

Application has thrown an uncaught exception and is terminated: Error: ENOENT, no such file or directory 'D:\local\UserProfile.babel.json' at Object.fs.openSync (fs.js:438:18) at Object.fs.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) at process._tickCallback (node.js:419:13) at Function.Module.runMain (module.js:499:11) at startup (node.js:119:16) at node.js:906:3

projekt jest na Github

+0

Spróbuj uruchomić polecenie 'npm install --save-dev babel-core'. Opcja '-g' dla npm zainstaluje pakiet w ścieżce globalnej dla modułów węzłów. Na platformie Azure ścieżka jest chroniona. –

+0

@ Badescu, Ponieważ ten problem jest trudny do odtworzenia w moim środowisku, proszę, podziel się z nami swoją stroną internetową, wykorzystując podejście wskazane na stronie https://github.com/projectkudu/kudu/wiki/Reporting- Twoja-witryna-nazwisko-bez-publikowania-to-publicznie? –

Odpowiedz

14

Miałem ten sam problem, rozwiązałem go, wyłączając pamięć podręczną Babel, ustawiając zmienną środowiskową BABEL_DISABLE_CACHE=1 w moich ustawieniach aplikacji.

można przeczytać więcej na temat pamięci podręcznej babel tutaj: https://babeljs.io/docs/usage/require/#environment-variables

+0

testowałem to, działa świetnie! Dziękuję Ci!! – Alex

+0

ma to znaczenie, jeśli ustawisz to przed lub po wymaganiu babel-polyfill? – es3735746

0

tworzę nodejs aplikację z Azure Galeria "Węzeł JS aplikacji Empty Web" i uruchom polecenie npm install -g babel w Kudu. Próbowałem odtworzyć twój problem, ale nie udało mi się, aby babel nie próbował uzyskać dostępu do pliku .babel.json na% USERPROFILE%.

Na Azure, globalne moduły npm zostaną zainstalowane na ścieżce "D: \ local \ AppData". Po ponownym uruchomieniu WebApp moduły globalne węzła zostaną usunięte.

Jeśli musisz używać globalnych modułów węzła, możesz skonfigurować zadanie uruchamiania dla roli sieciowej węzła, aby zainstalować moduły węzłów po uruchomieniu roli w usłudze Cloud Service. Proszę zapoznać się z https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/.

Normalnie, zainstalowane moduły węzłów za pomocą npm install <module-name> na ścieżce "wwwroot" z Kudu Debug Console na Azure Web Apps.

Próbowałem zainstalować moduł babel na ścieżce "wwwroot" i uruchomić polecenie node_module\.bin\babel, a napisać plik z kodem require('babel'), aby pomyślnie go uruchomić. To działa dobrze.

Pozdrawiam.

+0

Dzięki za odpowiedź Peter. Pominąłem niektóre rzeczy. Mam ** UPDATE ** - ed moje pytanie. Problem może nie pochodzić z modułów globalnych, to było założenie, które zrobiłem. Stworzyłem projekt testowy i wykonałem go ponownie przy użyciu Git deploy. Przesłałem go na https://github.com/badescuga/testbabelrequire – Alex

+0

@BadescuAlexandru Zainstalowałem moduł babel za pomocą polecenia 'npm install babel' (nie' babel-core') w ścieżce 'wwwroot' w Kudu. Próbowałem odtworzyć twój problem, gdy plik skryptowy js z ładowaniem 'babel/register' przy tej samej ścieżce' wwwroot', ale nie wydarzyło się żadne oczekiwanie. Twój problem może być spowodowany przez zainstalowany moduł 'babel-core'. Czy możesz sprawdzić katalog node_modules? –

+0

Sprawdziłem i mam "babel". To dziwne, że nie masz żadnych problemów. Czy na pewno uruchamiasz plik server.js? Czy widzisz jakiś .babel.json w D: \ local \ UserProfile? Zauważ, że do wdrożenia użyłem git (więc kudu zrobił dla mnie kompilację) – Alex

3

The error appeared when i tried load babel/register.

Proszę sprawdzić Cache.js w (.. \ node_modules \ Babel \ node_modules \ babel-core \ lib \ api \ zarejestrować \ Cache.js), aby sprawdzić, czy istnieje jakakolwiek definicja ścieżka babel cache, na przykład

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

Jeśli wykorzystać tego rodzaju zmiennych, to musiał mieć ustawienie klucza i wartości z ./cache inaczej nic z babel nie będzie działać na błękicie BABEL_CACHE_PATH aplikację. Proszę zapoznać się z http://blog.syntaxc4.net/post/2012/07/26/accessing-app-settings-configured-in-microsoft-azure-web-sites-using-php-and-node-js.aspx, jeśli chcesz poznać szczegóły dostępu do ustawień aplikacji w witrynie Azure za pomocą node.js.

Jeśli masz jakiekolwiek wątpliwości, daj nam znać.

2

zmienić lokalizację sklep .babel.json przez BABEL_CACHE_PATH

myślę, że lepiej niż wyłączenia buforowania

BABEL_CACHE_PATH = any_writable_and_exist_dir/Babel. cache.json

Powiązane problemy