2015-09-24 12 views
10

Ich bin mit einer Nodejs App auf azurblauen Web-Anwendungen und ich versuche, Babel mit Npm in es integrieren. Das Problem ist, dass babel eine Datei aufWarum Babel speichert .babel.json in USERPROFILE Pfad

%USERPROFILE%

namens .babel.json acccess versucht, eine Datei, die nicht existiert. Dies wird höchstwahrscheinlich installiert von:

npm install -g babel 

auf azur Web-Anwendungen, ich kann nicht scheinen, um es zu finden auf allen (auch nach npm install -g babel in Kudus für die Website ausgeführt wird).

Ich kopierte die Datei in %USERPROFILE% selbst zu %USERPROFILE% mit Kudu, aber auf Web-App Neustart die Datei verschwindet.

Gibt es eine Möglichkeit, babel in Web-Apps arbeiten zu lassen?

UPDATE

habe ich ein paar Dinge weglassen. Der Fehler trat auf, als ich load babel/register versuchte.

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

und der tatsächliche Fehler i in den Streaming-Protokolle sehen ist

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

das Projekt ist Github

+0

Versuchen Sie den Befehl 'npm install --save-dev babel-core' auszuführen. Die Option '-g' für npm wird das Paket in den globalen Pfad für Knotenmodule installieren. In Azure ist der Pfad geschützt. –

+0

@ Badescu, aufgrund dieses Problems ist schwer zu reproduzieren in meiner Umgebung, Könnten Sie bitte teilen Sie Ihre Website-Informationen mit uns über die Nutzung der Ansatz, wies auf https://github.com/projectkudu/kudu/wiki/Reporting- Ihr-Site-Name-ohne-Post-it-öffentlich? –

Antwort

14

Ich hatte das gleiche Problem, löste es durch Deaktivieren des Babel-Cache durch Setzen der Umgebungsvariablen BABEL_DISABLE_CACHE=1 in meinen Anwendungseinstellungen.

Sie können hier mehr über die babel Cache lesen: https://babeljs.io/docs/usage/require/#environment-variables

+0

getestet, funktioniert gut! Vielen Dank!! – Alex

+0

spielt es eine Rolle, ob Sie dies vor oder nach der Verwendung von Babel-Polyfill einstellen? – es3735746

0

ich eine NodeJS App von Azure Gallery "Node JS Leere Web app" erstellen und Führe den Befehl npm install -g babel in Kudu aus. Ich habe versucht, Ihr Problem zu reproduzieren, aber es ist mir nicht gelungen, dass das Babel nicht versucht, auf die Datei .babel.json unter% USERPROFILE% zuzugreifen.

In Azure werden die globalen npm-Module im Pfad "D: \ local \ AppData" installiert. Wenn Sie die WebApp neu starten, werden die globalen Knotenmodule gelöscht.

Wenn Sie die globalen Knotenmodule verwenden müssen, können Sie eine Startaufgabe für eine Knotenwebrolle zum Installieren von Knotenmodulen konfigurieren, wenn die Webrolle im Cloud-Dienst gestartet wird. Bitte beziehen Sie sich auf https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/.

Normalerweise installierte Knotenmodule mithilfe von npm install <module-name> im Pfad "wwwroot" von Kudu Debug Console auf Azure Web Apps.

Ich habe versucht, das Babel-Modul auf den Pfad "wwwroot" installieren und den Befehl node_module\.bin\babel ausführen, und schreiben Sie eine Datei enthalten den Code require('babel'), um es erfolgreich auszuführen. Es funktioniert gut.

Mit freundlichen Grüßen.

+0

Danke für die Antwort Peter. Ich habe einige Dinge ausgelassen. Ich habe ** UPDATE ** - Ed meine Frage. Das Problem mag sehr wohl nicht von den globalen Modulen sein, es war eine Annahme, die ich gemacht habe. Ich habe ein Testprojekt erstellt und es mit Git deploy erneut reproduziert. Ich habe es auf https://github.com/badescuga/testbabelrequire hochgeladen – Alex

+0

@BadescuAlexandru Ich installierte Babel-Modul mit dem Befehl 'Npm install babel' (nicht' Babel-Core') im Pfad 'wwwroot' in Kudu. Ich habe versucht, Ihr Problem zu reproduzieren, wenn Knoten js Skript-Datei mit dem Laden von 'babel/register' auf dem gleichen Pfad' wwwroot' ausführen, aber keine Expectation passiert. Ihr Problem, das möglicherweise von Ihrem installierten Modul verursacht wird, ist "Babel-Core". Können Sie das Verzeichnis node_modules überprüfen? –

+0

Ich habe überprüft und ich habe 'babel'. Es ist seltsam, dass du keine Probleme bekommst. Sind Sie sicher, dass Sie server.js ausführen? Siehst du eine .babel.json in D: \ local \ UserProfile? Beachten Sie, dass ich für die Bereitstellung git verwendet habe (also hat Kudu die Kompilierung für mich gemacht) – Alex

3

The error appeared when i tried load babel/register.

überprüfen Sie bitte die Cache.js bei (.. \ node_modules \ babel \ node_modules \ babel-core \ lib \ api \ registrieren \ Cache.js), um zu sehen, ob es eine Cache-babel Pfaddefinition ist, z.B.

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

Wenn Sie diese Art von Variablen nutzen, ist es erforderlich BABEL_CACHE_PATH App Einstellung Schlüssel und Wert von ./cache sonst nichts mit babel auf azur arbeiten würde nicht zu haben. Bitte lesen Sie http://blog.syntaxc4.net/post/2012/07/26/accessing-app-settings-configured-in-microsoft-azure-web-sites-using-php-and-node-js.aspx, wenn Sie die Details zum Zugriff auf App-Einstellungen in der Azure-Website mit node.js wissen möchten.

Sollten Sie weitere Bedenken haben, wenden Sie sich bitte an uns.

2

Sie ändern den Speicherort von .babel.json von BABEL_CACHE_PATH

Ich denke, es ist besser als disable Caching

BABEL_CACHE_PATH = any_writable_and_exist_dir/babel. cache.json

Verwandte Themen