Node.js

De Banane Atomic
Aller à la navigationAller à la recherche

Utilisation

Bash.svg
node test.js

File

Js.svg
fs.readFile(fileLocation, 'utf8', function (err, data) {
    if (err) throw err;
    else {
        // si le fichier ne contient pas some text, on l'ajoute
        if (data.indexOf('some text') < 0) {
            data = data.replace(/my regex/, '$&\n\nsome text');
            fs.writeFile(fileLocation, data, 'utf8', function (err) {
                if (err) throw err;
            });
        }
    }
});

Erreurs

Cannot find module

Si le module est bien installé, c'est que le chemin d'accès n'est pas le bon.

Bash.svg
export NODE_PATH=/usr/lib/node_modules/

npm, Node Packaged Modules

Bash.svg
# chercher un paquet
npm search nom-du-packet

npm --global install nom-du-packet
# --global/-g: global mode, npm installs packages into /usr/lib/node_modules and bins are installed in /usr/bin
# %appdata%/npm pour Windows
# local mode (default), npm installs packages into the current working directory.
# Packages are installed to ./node_modules, and bins are installed to ./node_modules/.bin.

npm uninstall -g nom-du-packet

# lister les paquets qui doivent être mis à jour
npm outdated

# tout mettre à jour
npm update
# màj de npm global
npm install -g npm

# lister les paquets installés
npm list -g --depth=0
# --depth=0: only display the top level packages

# dépendances
npm info [nom-du-packet] dependencies
Chemin d'installation des packages
Linux Windows
local ./node_modules .\node_modules
global /usr/lib/node_modules %AppData%\npm\node_modules
Chemin d'installation des exécutables
Linux Windows
local ./node_modules/.bin .\node_modules\.bin
global /usr/bin %AppData%\npm
Versions
^1.2.3 version demandée et les versions suivantes compatibles (>1.x.y avec x>=2 et <2.0.0)
~1.2.3 version demandée et les patchs suivants (1.2.x avec x>=3 et <1.3.0)
>1.2.3 inclus les versions suivantes
1.2.3 - 1.3.0 plage de versions

VersionMajeure.VersionMineure.Patch

Scripts

package.json
"scripts": {
  "cmd": "command",
  "dev": "php -S localhost:8080 -t ./api & ng serve --open"
},
Bash.svg
# lance le script dev
npm run dev

# passer des argument
npm run cmd -- arg1 arg2
Pour lancer plusieurs commandes:
  • Linux: utiliser & comme séparateur
  • Windows:
  • Cross-plateform: npm-run-all

Can't exec "aclocal"

> gifsicle@3.0.4 postinstall /srv/http/laravel1/node_modules/gifsicle
> node lib/install.js

  ⚠ No binary found matching your system. It's probably not supported.
  ⚠ gifsicle pre-build test failed
  ℹ compiling from source
  ✖ Error: autoreconf -ivf && ./configure --disable-gifview --disable-gifdiff --prefix="/srv/http/laravel1/node_modules/gifsicle/vendor" --bindir="/srv/http/laravel1/node_modules/gifsicle/vendor" && make install
Command failed: autoreconf -ivf
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal  --output=aclocal.m4t
Can't exec "aclocal": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 326.
autoreconf: failed to run aclocal: No such file or directory

    at ChildProcess.exithandler (child_process.js:273:12)
    at ChildProcess.emit (events.js:127:13)
    at maybeClose (internal/child_process.js:936:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
Bash.svg
# installer automake
pacman -S automake

ENOENT: no such file or directory

error: ENOENT: no such file or directory, open '/usr/lib/node_modules/@angular/cli/package.json

npm ERR! error in /usr/lib/node_modules/@angular/cli: ENOENT: no such file or directory, open '/usr/lib/node_modules/@angular/cli/package.json'
npm ERR! missing: nan@^2.3.0, required by fsevents@1.1.2
npm ERR! missing: semver@~5.3.0, required by node-gyp@3.6.2

ERR_STREAM_WRITE_AFTER_END

npm ERR! code ERR_STREAM_WRITE_AFTER_END
npm ERR! write after end

Nettoyer ou mettre à jour les paquets npm.

gyp WARN EACCES user "root" does not have permission to access the dev dir

Bash.svg
# utiliser le paramètre unsafe-perm
npm install --unsafe-perm -g @angular/cli

yarn

Bash.svg
# ajouter un paquet, l'ajoute comme dépendance dans package.json et met à jour yarn.lock
yarn add <package>
# --dev dépendance nécessaire pour le développement mais pas pour le fonctionnement de l'application
# --peer dans le cas de la publication de son propre paquet.
# --optional dépendance optionnelle, si l'installation échoue l'application utilisera un autre moyen pour fonctionner.

# ajoute un paquet pour le système
yarn global add <package>

# supprimer un paquet
yarn remove <package>
# recherche d'un paquet
npm search <package>

# info sur un package
yarn info <package>

# lister tous les paquets installés
yarn list
# lister les paquets installés
npm list --depth=0
# savoir pourquoi un paquet a été installé
yarn why <package>

# màj interactive
yarn upgrade-interactive

# màj
yarn upgrade [package] --latest        # màj à la dernière version
yarn upgrade [package]@3.0.0 --carret  # màj package@^3.0.0

# lancer myscript
yarn run <myscript>

# créer le fichier package.json
yarn init

# installation
npm i -g yarn
  • Les paquets sont ajoutés dans node_modules
  • Les paquets globaux sont ajoutés dans %LOCALAPPDATA%\Yarn\Data\global\node_modules ou ~/.config/yarn/global/node_modules
  • Ajouter %LOCALAPPDATA%\Yarn\bin ou ~/.config/yarn/global/node_modules/.bin au PATH

yarn vs npm

  • plus rapide
  • enregistre la version exacte plutôt que la version majeur dans yarn.lock
  • savoir pourquoi un paquet a été installé yarn why my-package
  • mise à jour interactive yarn upgrade-interactive
npm yarn
npm install yarn
npm install my-package --save-dev yarn add my-package --dev
npm install my-package -g yarn global add my-package
npm run myscript yarn myscript

Migrer depuis npm