2015-09-24 14 views
10

Sto eseguendo un'app di nodejs su app web blu e sto cercando di integrare babel usando npm in esso. Il problema è che babel sta cercando di accedere ad una lima aperché babel memorizza .babel.json nel percorso USERPROFILE

%USERPROFILE%

nome .babel.json, un file che non esiste. Questo è molto probabilmente installato da:

npm install -g babel 

Sul applicazioni web azzurre, io non riesco a trovare a tutti (anche dopo l'esecuzione npm install -g babel nel kudu per il sito).

Ho copiato il file in %USERPROFILE% me stesso su %USERPROFILE% utilizzando kudu ma sul web app riavvia il file scompare.

C'è un modo per far funzionare Babele sulle app Web?

UPDATE

Ho fatto omettere alcune cose. L'errore è apparso quando ho provato a caricare babel/register.

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

e l'errore effettivo vedo nei registri di streaming è

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

il progetto è in Github

+0

Prova a eseguire il comando 'npm install --save-dev babel-core'. L'opzione '-g' per npm installerà il pacchetto nel percorso globale per i moduli nodo. In Azure, il percorso è protetto. –

+0

@ Badescu, A causa di questo problema è difficile riprodurre sul mio ambiente, potrebbe condividere le informazioni del tuo sito web con noi sfruttando l'approccio che ha sottolineato su https://github.com/projectkudu/kudu/wiki/Reporting- il tuo nome-sito-senza pubblicarlo pubblicamente? –

risposta

14

Ho avuto lo stesso problema, risolto risolto disabilitando la cache babel impostando la variabile di ambiente BABEL_DISABLE_CACHE=1 nelle impostazioni dell'applicazione.

Si può leggere di più sulla cache babel qui: https://babeljs.io/docs/usage/require/#environment-variables

+0

testato, funziona alla grande! Grazie!! – Alex

+0

è importante se lo si imposta prima o dopo aver richiesto babel-polyfill? – es3735746

0

creo un'applicazione nodejs da Azure Galleria "Node JS Web vuoto app" e eseguire il comando npm install -g babel in Kudu. Ho provato a riprodurre il problema, ma non sono riuscito a far sì che Babel non stia tentando di accedere al file .babel.json in% USERPROFILE%.

Su Azure, i moduli globali npm verranno installati nel percorso "D: \ local \ AppData". Quando si riavvia WebApp, i moduli globali del nodo verranno eliminati.

Se è necessario utilizzare i moduli globali del nodo, è possibile configurare un'attività di avvio per un ruolo Web del nodo per l'installazione dei moduli nodo all'avvio del ruolo Web in Servizio cloud. Si prega di fare riferimento a https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/.

In genere, i moduli di nodo installati utilizzano npm install <module-name> nel percorso "wwwroot" di Kudu Debug Console su App Web di Azure.

Ho provato a installare il modulo babel sul percorso "wwwroot" ed eseguire il comando node_module\.bin\babel e scrivere un file con il codice require('babel') per eseguirlo correttamente. Funziona bene.

I migliori saluti.

+0

Grazie per la risposta Peter. Ho omesso alcune cose. ho ** AGGIORNAMENTO ** - edita la mia domanda. Il problema potrebbe non essere dei moduli globali, era un'ipotesi che ho fatto. Ho creato un progetto di test e l'ho riprodotto nuovamente utilizzando Git deploy. L'ho caricato su https://github.com/badescuga/testbabelrequire – Alex

+0

@BadescuAlexandru Ho installato il modulo babel usando il comando 'npm install babel' (non' babel-core') nel percorso 'wwwroot' in Kudu. Ho provato a riprodurre il problema quando il nodo eseguiva il file di script js con il caricamento di 'babel/register' nello stesso percorso' wwwroot', ma nessuna aspettativa è andata a buon fine. Il tuo problema potrebbe essere causato dal tuo modulo installato è 'babel-core'. Puoi controllare la directory node_modules? –

+0

ho controllato e ho ottenuto 'babele'. È strano che tu non abbia problemi. Sei sicuro di eseguire server.js? Vedi qualche .babel.json in D: \ local \ UserProfile? Nota che per la distribuzione, ho usato git (quindi kudu ha fatto la compilazione per me) – Alex

3

The error appeared when i tried load babel/register.

Si prega di verificare la Cache.js a (.. \ node_modules \ babele \ node_modules \ babel-core \ lib \ api \ registrazione \ Cache.js) per vedere se c'è qualche definizione di percorso della cache babel, per esempio

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

Se si leva questo tipo di variabili, è necessario avere l'impostazione chiave e il valore di ./cache altrimenti qualsiasi cosa con babele non avrebbe funzionato su Azure BABEL_CACHE_PATH app. Fare riferimento a http://blog.syntaxc4.net/post/2012/07/26/accessing-app-settings-configured-in-microsoft-azure-web-sites-using-php-and-node-js.aspx se si desidera conoscere i dettagli dell'accesso alle impostazioni dell'app nel sito Web di Azure utilizzando node.js.

In caso di ulteriori dubbi, non esitate a farcelo sapere.

2

si modifica la posizione vendite di .babel.json da BABEL_CACHE_PATH

Penso che sia meglio di caching disabilitare

BABEL_CACHE_PATH = any_writable_and_exist_dir/babel. cache.json

Problemi correlati