IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Installation de nodejs et less pour Symfony2 sous Centos 7 [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut Installation de nodejs et less pour Symfony2 sous Centos 7
    Bonjour,

    Je suis en train de préparer mon serveur Centos 7 pour accueillir une application sous Symfony2.
    Je déploie mon application avec Capifony (http://capifony.org/) et mon application se déploie sans soucis.

    Lorsque je vais sur mon serveur, et que je veux compiler mes fichiers less avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    admin@server:/path/to/symfony/project $ php app/console assetic:dump --env=prod --no-debug
    j'ai en retour l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    [Assetic\Exception\FilterException]
      An error occurred while running:
      '/usr/local/bin/node' '/tmp/assetic_lessWAAyci'
      Error Output:
      module.js:338
          throw err;
                ^
      Error: Cannot find module 'less'
          at Function.Module._resolveFilename (module.js:336:15)
          at Function.Module._load (module.js:278:25)
          at Module.require (module.js:365:17)
          at require (module.js:384:17)
          at Object.<anonymous> (/tmp/assetic_lessWAAyci:1:74)
          at Module._compile (module.js:460:26)
          at Object.Module._extensions..js (module.js:478:10)
          at Module.load (module.js:355:32)
          at Function.Module._load (module.js:310:12)
          at Function.Module.runMain (module.js:501:10)
    Comme le message l'indique, il ne trouve pas le module less. Le problème est que j'ai bien nodejs d'installé et j'ai bien fait un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    admin@server:~$ sudo npm install less -g
    J'ai donc bien nodejs (/usr/local/bin/node) et j'ai bien le dossier de modules dans /usr/local/lib/node_modules/ avec dedans un dossier less. J'ai donc spécifié à mon application dans config.yml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    assetic:
        less:
            node: "/usr/local/bin/node"
            node_paths: ["/usr/local/lib/node_modules"]
            apply_to: "\.less$"
    Je précise que lorsque je teste la compilation de fichier less en ligne de commande du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    admin@server:~$ lessc style.less style.css
    et bien ça fonctionne.

    Je suis perdu parce que je ne sais pas trop quoi faire. J'ai beau réinstaller nodejs et npm, rien à faire. Si quelqu'un a une idée ?

    Merci

  2. #2
    Membre chevronné
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Billets dans le blog
    7
    Par défaut
    Bonjour,
    Essai plutôt avec less.php
    https://github.com/oyejorge/less.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    assetic: 
        debug:          %kernel.debug%
        use_controller: false
        bundles:        [YourBundle]
        assets:           
            css_front:
                inputs:
                    #- %kernel.root_dir%/../src/Inscreen/AppBundle/Resources/public/css/googlefont.css
                    #- ....
                filters:
                    - lessphp
                    #- cssrewrite
                    #- yui_css
                output: css/stylesheet.css
        filters:
            lessphp:
                 file: %kernel.root_dir%/../vendor/oyejorge/less.php/lessc.inc.php
                 apply_to: "\.less"
    et dans ton composer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    {
        #....
        "require": {
            #.....
            "oyejorge/less.php": "v1.7.0.2"
            #.....
    And by the way i hate assetic (très lourd )

    sinon moi je lance pas cette commande en prod, je la lance en dev et je versionne seulement le résultat "css/stylesheet.css"

    du coup j'ai pas besoin de la lancer dans chaque env.

  3. #3
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Merci, je n'y avais pas pensé. C'est une solution alternative qui peut fonctionner mais je voudrais comprendre et résoudre ce problème sinon je n'arriverais plus à me regarder dans une glace
    Par contre, ta réponse me fait dire qu'il faudrait que je me replonge dans la doc de la gestion des assets...

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,

    J'ai eu un probleme similaire, résolu comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //à ajouter au début app/console
    unset($_SERVER['NODE_PATH']);
    Le probleme est que si la variable d'environnement est déjà définie (dans $_SERVER donc), alors le process n'utilise pas le path définie dans config.yml.
    Cela vient sans doute de la façon dont less a été installé et par quel utilisateur unix.
    Tu peux tester tout d'abord en ajoutant un print_r($_SERVER); dans app/console.



    Mon avis concernant l'utilisation de less.php:
    Pour le front end, les outils fournis par javascript et node sont + nombreux, + fiable et + standard que ceux en php.
    au delà de less, on peut utiliser :
    - uglify : uglify: http://symfony.com/doc/current/cookb.../uglifyjs.html
    - bower
    - ...

  5. #5
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Salut arnooo999,

    Je suis d'accord avec toi, on a à notre disposition des outils comme node, etc. qui sont quand même super puissants et plus standard.
    @phppiste, le problème ne vient pas d'assetic. J'ai fait le test sur ma machine en local en basculant mon application en prod, et en faisant mon dump des fichiers => la compilation se passe bien. Mon appli tourne du feu de dieu !

    Non le problème vient du fait que sur mon serveur, il ne trouve pas node_modules lorsque je lance la commande php app/console assetic:dump --env=prod. Et j'ai besoin de la lancer car lors de mon déploiement cette commande est lancée justement en fin de script pour compiler les fichiers pour la version de prod.

    J'ai fait un test en local où j'ai volontairement cassé le path vers node_modules et j'ai bien le même résultat : "module less introuvable". Donc là, j'ai mieux ciblé le problème : il ne vient pas de node (qu'il trouve) mais de node_modules qu'il ne trouve pas.

    Lorsque je fais un print_r($_SERVER), j'ai le résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Array
    (
        [...]
        [USER] => dasifp
        [LS_COLORS] => [...]
        [MAIL] => /var/spool/mail/dasifp
        [PATH] => /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dasifp/.local/bin:/home/dasifp/bin:/usr/local/lib/
        [PWD] => /var/www/xmlreader-dasifp01.cg31.priv/current
        [LANG] => fr_FR.UTF-8
        [...]
        [HOME] => /home/dasifp
        [LOGNAME] => dasifp
        [...]
        [LESSOPEN] => ||/usr/bin/lesspipe.sh %s
    )
    Pas de NODE_PATH par contre j'ai un LESSOPEN...

    Je ne sais pas si ça te parles plus arno ? En tout cas pas de NODE_PATH.

    Ton idée de l'utilisateur unix utilisé me fait tiquer... je vais regarder ça.

  6. #6
    Membre chevronné
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Billets dans le blog
    7
    Par défaut
    Re,

    Tout a fait d'accord avec vous mais parfois le rêglage de node deviens une casse tête pour ceux qui ne le conaisse pas

    brief j'ai trouver ce lien en faisant une recherche sur le sujet

    http://blog.servergrove.com/2012/03/16/error-cannot-find-module-less-with-symfony2-assetic-and-twitter-bootstrap/

    apparament il faut explicitement donner le path vers node et node_modules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    assetic:
       debug: %kernel.debug%
       use_controller: false
       filters:
         cssrewrite: ~
         less:
           node: /usr/local/bin/node
           node_paths: [/usr/local/lib/node_modules]
    un whereis node_modules sur mon locale donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    node_modules: /usr/local/lib/node_modules

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Install libcurl pour PHP5 sous Debian Sarge
    Par evguen dans le forum Administration système
    Réponses: 3
    Dernier message: 21/03/2010, 21h47
  2. Installer la JRE pour Eclispe sous ubuntu
    Par Marie.B dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 21/07/2009, 19h46
  3. Réponses: 3
    Dernier message: 27/04/2009, 16h53
  4. installation de jboss pour eclipse sous windows
    Par polios dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 31/03/2009, 10h51
  5. Installation du module DBI pour perl sous W2K
    Par tomcat dans le forum Modules
    Réponses: 6
    Dernier message: 22/01/2004, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo