J'exécute une application nodejs sur les applications Web Azure et j'essaie d'intégrer babel à l'aide de npm. Le problème est que Babel essaie d’accéder à un fichier à
%PROFIL DE L'UTILISATEUR%
nommé .babel.json, un fichier qui n'existe pas. Ceci est probablement installé par:
npm install -g babel
Sur les applications Web Azure, je n'arrive pas à le trouver du tout (même après avoir exécuté npm install -g babel
en kudu pour le site).
J'ai copié le fichier dans %USERPROFILE%
moi-même dans %USERPROFILE%
à l'aide de kudu, mais le redémarrage de l'application Web supprime le fichier.
Existe-t-il un moyen de faire fonctionner Babel sur les applications Web?
UPDATE
J'ai omis certaines choses. L'erreur est apparue lorsque j'ai essayé de charger babel/register
.
require('babel/register')({
optional: ["es7.asyncFunctions"]
});
et l'erreur réelle que je vois dans les journaux de streaming est
L'application a levé une exception non interceptée et est terminée: Erreur: ENOENT, ce fichier ou répertoire 'D:\local\UserProfile.babel.json' sur Object.fs.openSync (fs.js: 438: 18) sur Object.fs .writeFileSync (fs.js: 977: 15) lors de la sauvegarde (D:\home\site\wwwroot\noeud_modules\babel\noeud_modules\babel-noyau\lib\api\register\cache.js: 35: 19) lors du processus. _tickCallback (node.js: 419: 13) à Function.Module.runMain (module.js: 499: 11) au démarrage (node.js: 119: 16) à node.js: 906: 3
le projet est sur Github
J'ai eu ce même problème, résolu en désactivant le cache babel en définissant la variable d'environnement BABEL_DISABLE_CACHE=1
dans les paramètres de mon application.
Vous pouvez en savoir plus sur le cache babel ici: https://babeljs.io/docs/usage/require/#environment-variables
Vous modifiez l'emplacement de magasin de .babel.json
par BABEL_CACHE_PATH
Je pense que c'est mieux que de désactiver la mise en cache
BABEL_CACHE_PATH = any_writable_and_exist_dir/babel.cache.json
L'erreur est apparue lorsque j'ai essayé de charger babel/register.
Vérifiez le fichier Cache.js à (..\noeud_modules\babel\noeud_modules\babel-noyau\lib\api\register\Cache.js) pour voir s’il existe une définition du chemin du cache de Babel, par exemple.
process.env.BABEL_CACHE_PATH || _path2["default"].join(_homeOrTmp2["default"], ".babel.json");
Si vous exploitez ce type de variables, vous devez disposer de la clé de paramètre de l'application BABEL_CACHE_PATH et de la valeur ./cache, sans quoi quoi que ce soit avec babel ne fonctionnerait pas sur Azure. Veuillez vous référer à http://blog.syntaxc4.net/post/2012/07/26/accessing-app-settings-configured-in-Microsoft-Azure-web-sites-using-php-and-node-js .aspx si vous souhaitez connaître les détails d'accès aux paramètres de l'application sur le site Web Azure à l'aide de node.js.
Si vous avez d'autres préoccupations, n'hésitez pas à nous le faire savoir.
Je crée une application nodejs à partir de Azure Gallery "Application Web Node JS vide" et exécute la commande npm install -g babel
dans Kudu. J'ai essayé de reproduire votre problème, mais je n'ai pas réussi à affirmer que Babel n'essayait pas d'accéder au fichier .babel.json à% USERPROFILE%.
Sur Azure, les modules globaux npm seront installés dans le chemin "D:\local\AppData". Lorsque vous redémarrez la WebApp, les modules globaux du noeud seront supprimés.
Si vous devez utiliser les modules globaux de nœud, vous pouvez configurer une tâche de démarrage pour un rôle Web de nœud afin d'installer des modules de nœud lors du démarrage du rôle Web dans Cloud Service. Veuillez vous référer à https://Azure.Microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/ .
Normalement, les modules de noeud installés à l'aide de npm install <module-name>
dans le chemin "wwwroot" de la console de débogage Kudu sur Azure Web Apps.
J'ai essayé d'installer le module babel sur le chemin "wwwroot" et d'exécuter la commande node_module\.bin\babel
et d'écrire un fichier contenant le code require('babel')
pour l'exécuter correctement. Ça fonctionne bien.
Meilleures salutations.