Пулл соединений MySQL/Node.js

Ниже код, который организует это при помощи пулла соединений, который гораздо легче настраивать без непредвиденных ошибок:

var mysql = require('mysql');

var dbConfig = {
    host: "myhost",
    user: "user",
    password: "password",
    database: "dbname",
    port:3306
};

var user = require('./routes/user');
app.use('/user', user);
app.post('/user', function(req, res) {
    res.set({
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
        'Access-Control-Allow-Headers': 'X-Requested-With',
        'Access-Control-Allow-Credentials': 'true'
    });
    var data = req.body;
    var mysqlPool  = mysql.createPool(dbConfig);
    if(data.key=="ENTER_CUSTOMER")
    {
        mysqlPool.getConnection(function(err, connection) {
            if(err) throw err;
            connection.query("SELECT * FROM user where email LIKE '"+data.userName+"'", function(err, result, fields) {
                if(err) {
                    connection.release();
                    console.error(err);                   
                    return;
                }
                res.json({"key":data.key,"result":result});
                connection.release();
            });
        }); 
    }
});

 

Запуск любого процесса в демон/бакграунд при помощи pm2 и bash — скрипта

Допустим, есть такая задача, чтобы процесс не завершался после закрытия консоли и для этого есть утилита Node.js под названием pm2. Ссылка на проект в GitHub.

 

 Использование

Установка

Делается это очень просто:

npm install pm2 -g

Запуск в демон

Запустим какое-нибудь приложение или процесс в демон:

pm2 start app.js

Вывод списка запущенных процессов, остановка, перезапуск и удаление процесса

Весь список процессов в делегировании:

pm2 list|ls

Остановка:

pm2 stop [options] <id|name|all|json|stdin...>

Перезапуск:

pm2 restart [options] <id|name|all|json|stdin...>

Удаление из списка делегирования:

pm2 delete <name|id|script|all|json|stdin...>

Это не полный перечень команд, но этого достаточно, чтобы быстро начать работу.

 

Реальный пример

Давайте теперь поставим задачу отправить в демон/бакграунд процесс запуска приложения Angular CLI на удаленном или локальном сервере. Для запуска приложения Angular в обычном режиме используется команда:

ng serve --host 0.0.0.0 --port 4200

Нам же нужно, сделать так, чтобы дать этому процессу название и запустить его в процесс делегирования pm2. Для этого создаем файл скрипта оболочки bash с расширением sh. Например, назовем его start.sh и запишем команду запуска процесса:

#!/bin/bash
ng serve --host 0.0.0.0 --port 4200

И теперь, чтобы запустить в делегирование pm2 и дать этому процессу названием выполним команду:

pm2 start start.sh --name serverapp

где serverapp — то название, которое мы дали процессу в списке задач делегирования pm2. Все, процесс запущен в демон/бакграунд режиме и чтобы посмотреть данный процесс в списке задач делегирования pm2 выполним команду:

pm2 list

После чего pm2 выведет в консоль список всех процессов, среди которых и наш serverapp:

Установка новой версии Node.js на CentOS

Данная статья является дополнением статьи по ссылке и отличается тем, что необходимо установить новую версию GCC 4.8.5 для компиляции исходников новой версии Node.js посредством чего решим ошибку установки:

WARNING: failed to autodetect C++ compiler version (CXX=g++)

В статье установим версию Node.js v8.0.0.

Примечание. Понятие «новая версия» относительна, поэтому, со временем версия версия Node.js 8.0.0 тоже устареет. Новая, относительно времени написания данной статьи.

 

Установка новой версии компилятора GCC на CentOS

Шаг 1. Устанавливаем GCC:

sudo yum install gcc-c++

Если после данной операции выводится то же предупреждение, что не установлена актуальная версия GCC, то идем к следующему шагу скачивания исходников и компиляции.

Шаг 2. Скачиваем исходники GCC для создания бинарников установки на CentOS:

Сначала переходим в папку /usr/src/:

cd /usr/src

и скачиваем исходники:

wget http://mirrors-usa.go-parts.com/gcc/releases/gcc-4.8.5/gcc-4.8.5.tar.gz

Зеркала на скачивание могут меняться и можете выбрать любое зеркало поближе к своей стране или области, где вы находитесь. В данном случае, используются зеркала в США.

Шаг 3. Распаковываем исходники:

tar zxvf gcc-4.8.5.tar.gz

Шаг 4. Входим в распакованную папку и устанавливаем зависимости исходников:

cd gcc-4.8.5
./contrib/download_prerequisites

Шаг 5. Выходим из папки в корень /usr/src/ и создаем папку вывода компиляции:

cd ../
mkdir gcc-build-4.8.0

Было бы логично, что папка должна быть не с номерами версии 4.8.0, а с номерами 4.8.5, которую мы устанавливаем. Почему 4.8.0 я не знаю, это может быть клерикальная ошибка разработчиков, но последуем примеру.

Шаг 6. В созданном каталоге gcc-build-4.8.0 сгенерируем makefile:

cd gcc-build-4.8.0
../gcc-4.8.5/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

Вот каталог gcc-4.8.5, оригинал ошибочно принят за 4.8.0. Это ошибка разработчиков, которую я упомянул в шаге 5.

Шаг 7. Компиляция. В данном случае, ждал этот процесс около 3 часов, поэтому имейте в виду, что может идти долго:

make -j4

Выполняем эту команду в папке gcc-build-4.8.0.

Шаг 8. Устанавливаем скомпилированные бинарники:

sudo make install

Шаг 9. Удостоверимся, что GCC новой версии у нас установился:

gcc -v

Теперь, когда новый компилятор GCC для CentOS установлен продолжим установку новой версии Node.js

 

Установка Node.js v8.0.0 на CentOS

Сначала обновляем систему репозиторий:

yum update

Устанавливаем группу инструментов разработки Development Tools:

yum -y groupinstall "Development Tools"

Опция -y позволит избежать подтверждения действий на протяжении установки. После введите команду для установки ПО, необходимого для подключения к VPS и получения доступа к нескольким параллельным сессиям:

yum -y install screen

Переходим в папку /usr/src:

cd /usr/src

Загружаем архив с Node.js при помощи команды wget:

wget http://nodejs.org/dist/v8.0.0/node-v8.0.0.tar.gz

Все доступные архивы кода NodeJS можно посмотреть по ссылке http://nodejs.org/dist/.

Извлекаем содержимое скачанного архива:

tar zxf node-v8.0.0.tar.gz

Переместимся в каталог, используя команду cd:

cd node-v8.0.0

Выполняем скрипт configure:

./configure

Команда для компиляции исходного кода:

make

По окончанию данного процесса нужно выполнить общесистемную установку:

make install

Команда make install призвана разместить скомпилированные двоичные файлы в системный путь, чтобы каждый пользователь мог работать с ним, не отвлекаясь на дополнительные настройки. По умолчанию двоичный код Node.js “лежит” в /usr/local/bin/node.

 

Использованные источники:

记录:在bandwagon的VPS上装nodejs

Установка Node.js на CentOS 6

Установка Node.js v0.x на CentOS

Примечание. Это легкий способ установки Node.js ?>v0.10.4, но таит в себе вопрос целесообразности, потому что таким способом можно установить только старую версию Node.js, на котором особо современyого ничего не сделать и даже AngularJS требует версию, начиная с Node.js v6. Версии Node.js требуют разные компиляторы, которыми собираются бинарники. В старых версиях требовался старый GCC, а в новых версиях требуется GCC версии GCC v4.8.5 или clang++ v3.4 и выше, таким образом, если попытаетесь установить новую версию Node.js на CentOS может выскочить ошибка в консоли:

WARNING: C++ compiler too old, need g++ 4.8 or clang++ 3.4 (CXX=g++)

Поэтому, если если хотите установить новую версию, то советую почитать эту статью.

Сначала обновляем систему репозиторий:

yum update

Устанавливаем группу инструментов разработки Development Tools:

yum -y groupinstall "Development Tools"

Опция -y позволит избежать подтверждения действий на протяжении установки. После введите команду для установки ПО, необходимого для подключения к VPS и получения доступа к нескольким параллельным сессиям:

yum -y install screen

Переходим в папку /usr/src:

cd /usr/src

Загружаем архив с Node.js при помощи команды wget:

wget http://nodejs.org/dist/v0.10.4/node-v0.10.4.tar.gz

Все доступные архивы кода NodeJS можно посмотреть по ссылке http://nodejs.org/dist/.

Извлекаем содержимое скачанного архива:

tar zxf node-v0.10.4.tar.gz

Переместимся в каталог, используя команду cd:

cd node-v0.10.4

Выполняем скрипт configure:

./configure

Команда для компиляции исходного кода:

make

По окончанию данного процесса нужно выполнить общесистемную установку:

make install

Команда make install призвана разместить скомпилированные двоичные файлы в системный путь, чтобы каждый пользователь мог работать с ним, не отвлекаясь на дополнительные настройки. По умолчанию двоичный код Node.js “лежит” в /usr/local/bin/node.

Отправка Email через PHP из Node.js через Ajax

Рассмотрим пример отправки почты через AJAX — запрос посредством PHP из сервера Node.js. Для начала нам потребуется инструмент генерации AJAX — запросов и для этого будем использовать модуль request. Установить ее очень просто:

npm install request

Отправка из Node.js:

var request = require('request');
request.
    post(
    {
        url:'http://xxx.xxx.xxx.xxx/mail/send.php', 
        form:{
            key: data.key,
            title: "Ваш пароль в сервисе",
            userEmail: data.userEmail,
            message:{
                "Логин":result[0].email,
                "Пароль":result[0].password
            }
        }
    }, 
    function(err, httpResponse, body){
        console.log(err);
        console.log(httpResponse);
        console.log(body);
    });

 

Прием в PHP — файле send.php:

<?php
$message = "";
foreach ($_REQUEST["message"] as $key => $value)
{
    $message .= "<br/><b>".htmlspecialchars($key)."</b>: ".htmlspecialchars($value)."<br/>";
}
// Для отправки HTML-письма должен быть установлен заголовок Content-type
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
// Дополнительные заголовки
$headers[] = 'To: Mary <mary@example.com>, Kelly <kelly@example.com>';
$headers[] = 'From: Birthday Reminder <birthday@example.com>';
$headers[] = 'Cc: birthdayarchive@example.com';
$headers[] = 'Bcc: birthdaycheck@example.com';

// Отправляем
mail($_REQUEST["userEmail"], $_REQUEST["title"], $message, $headers);

echo json_encode($_REQUEST);

Один из методов организации связи по методике REST клиент-серверного приложения

Данный метод не претендует на истинность, поэтому смею себе вольность рассуждать то, как можно организовать связь между клиентом в виде мобильного приложения и сервером. Учитывая, что напрямую к БД у клиента доступа нет, то все взаимодействие выборки, записи, обработки сервером организуются методом передами ключей-запросов(фильтров) POST — методом. Т.е., мы заранее определяем ключевое слово(фильтр) и порядок операций, которые будут сделаны на сервере после его отправки  из клиента и ждем, когда сервер нам ответит через AJAX — ответ и все. Ниже приведу простой пример такого взаимодействия.

Примерные шаги

  1. Создаем URL — адрес для отправки POST — запросов с клиента. К примеру, если запросы обрабатывают данные пользователя, то логично создать URL — адрес www.myhostname.com:3000/user и на него отправлять данные;
  2. Учитывая, что при отправке POST — запроса мы отправляем данные в формате JSON, то один параметр должен быть флагом. Данный флаг нужен, чтобы создавать фильтры внутри одного POST — запроса на один URL.
  3. Организация фильтра запроса в пределах одного сеанса. К примеру {«flag»:»read»,»userName»:»David», …}, что означает, что мы хотим прочесть юзера под определенным логином, после чего сервер возвратит клиенту запрощенные данные.

 

Разбираемся в каждом шаге

Создание URL для запроса — это обычное создание страницы в Node.js, с которого данные будут обрабатывать в POST — запросе. Лучще воспользоваться для этого express.js . Для этого создаем необходимую страницу в директориях views/routes как обычно это делается для приложения express.js. К  примеру так в папке views/users.pug:

extends layout

block content
  h1= title
  p Welcome to #{title}

и файл приема запросов routes/users.js:

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.render('users', { title: 'User Page' });
});

module.exports = router;

После этого по пути www.myhostname.com:3000/users сервер будет принимать данные в POST или в GET режиме. Для обработки этих запросов пишем в главном файлу сервера app.js обработчики этих запросов, учитывая URL — запроса. К примеру, чтобы обработать все запросы к URL www.myhostname.com:3000/users прописываем следующие строки:

...
//Регистрируем новый URL-страницу
var users = require('./routes/users');
...
//Указываем на использование этой страницы и обрабатываем запросы
app.use('/users', users);
app.post('/users', function(req, res) {
    //Даем доступ клиенту на обработку его данных сервером
    res.set({
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
        'Access-Control-Allow-Headers': 'X-Requested-With',
        'Access-Control-Allow-Credentials': 'true'
    });
    
    //Получаем данные от клиента
    var data = req.body;
    
    //...тут какая-то общая логика обработки
    
    //...Обработка для фильтра userReadFromDb
    if(data.key=="userReadFromDb")
    {
        //...тут какая-то локальная логика обработки
        //Отправляем результаты обработки обратно клиенту
        res.json({"key":data.key,"info":"Ok"});
    }else
    //...Обработка для фильтра userWriteToDb
    if(data.key=="userWriteToDb")
    {
        //...тут какая-то лоакльная логика обработки
        //Отправляем результаты обработки обратно клиенту
        res.json({"key":data.key,"info":"Ok"}); 
    }
    ...
});
...

Стоит отметить, что получаемые фильтры от клиента и отправляются ему обратно. Это нужно, чтобы в приложении клиента идентифицировать факт удачного обновления данных или получения определенных данных по указанному фильтру. Это очень удобно и экономит массу строк кода.

 

REST при помощи пулл соединений MySQL/Node.js

Выше описан стандартный механизм соединения приложения с MySQL. Ниже код, который организует это при помощи пулла соединений, который гораздо легче настривать без непредвиденных ошибок:

var mysql = require('mysql');

var dbConfig = {
    host: "myhost",
    user: "user",
    password: "password",
    database: "dbname",
    port:3306
};

var user = require('./routes/user');
app.use('/user', user);
app.post('/user', function(req, res) {
    res.set({
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
        'Access-Control-Allow-Headers': 'X-Requested-With',
        'Access-Control-Allow-Credentials': 'true'
    });
    var data = req.body;
    var mysqlPool  = mysql.createPool(dbConfig);
    if(data.key=="ENTER_CUSTOMER")
    {
        mysqlPool.getConnection(function(err, connection) {
            if(err) throw err;
            connection.query("SELECT * FROM user where email LIKE '"+data.userName+"'", function(err, result, fields) {
                if(err) {
                    connection.release();
                    console.error(err);                   
                    return;
                }
                res.json({"key":data.key,"result":result});
                connection.release();
            });
        }); 
    }
});

 

Организация CRUD в Node.js и MySQL

Предисловие

CRUD (сокр. от англ. create, read, update, delete — «создать, прочесть, обновить, удалить») — акроним, обозначающий четыре базовые функции, используемые при работе с персистентными хранилищами данных:

  • C — создание;
  • R — чтение;
  • U — редактирование;
  • D — удаление.

Термин стал популярным благодаря книге Джеймса Мартина (англ. James Martin) «Managing the Data-base Environment», выпущенной в 1983 году

Речь в данной статье пойдет об использовании модуля mysql для работы с БД MySQL. Проект находится в репозитории GitHub. Сначала нам необходимо ее установить через команду:

npm install mysql

Данный модуль полностью под лицензией MIT и являются полноценным драйвером MySQL для Node.js, написанный на JavaScript и не требует дополнительной компиляции.

Соединение и простой пример

Для начала необходимо соединиться с БД, подключив данный модуль к скрипту. Для этого пишем:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

Теперь можно выполнять любой запрос к БД со стороны сервера Node.js. Например, такой:

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();

 

Некоторые особенности при работе с данным модулем

Каждая сессия обращения к БД через запросы должна начинаться с создания соединения

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

и заканчиваться операцией и закрытием. Если не закрыть соединения сеанса, то может быть выкинута ошибка. После соединения простой пример выборки может выглядеть вот так:

connect.query("SELECT * FROM media where code LIKE '"+data.mediaCode+"'", function (err, result, fields) {
    if (err) {throw err;}
    res.json({"flag":"isindb", "result":result});
    connect.end();
});

Как организовать процесс обработки и выдачи запросов — это тема отдельной статьи.

 

CREATE — создание записи

Ниже представлен типичный простой код создания нового поля в таблице БД MySQL средствами Node.js:

//Делаем авторизацию
connect = mysql.createConnection({
    host: "hostname",
    user: "user",
    password: "password",
    database: "dbname"
});
//Создание нового соединения
connect.connect(function(err) {
    if (err) {throw err;}
});
//Добавляем новое поле
var post = {"colName1":"val1", "colName2":"val2", "colName3":"val3"};
connect.query('INSERT INTO tableName SET ?', post, function (err, result) {
    if (err) throw err;
    
    var data = {"flag":"myFlag","result":result};
    //******Уведомляем клиента о добавлении до закрытия*********
    //res.json(data);
    //******Уведомляем клиента о добавлении до закрытия*********
    connect.end();
});

READ — чтение полей

Ниже представлен типичный простой код чтения поля из таблицы БД MySQL средствами Node.js:

//Делаем авторизацию
connect = mysql.createConnection({
    host: "hostname",
    user: "user",
    password: "password",
    database: "dbname"
});
//Создание нового соединения
connect.connect(function(err) {
    if (err) {throw err;}
});
//Читаем поле(я)
connect.query("SELECT * FROM tableName where colName1 LIKE 'keyValue'", function (err, result, fields) {
    if (err) {throw err;}
    //******Уведомляем клиента о добавлении до закрытия*********
    //res.json({"flag":"myFlag", "result":result});
    //******Уведомляем клиента о добавлении до закрытия*********
    connect.end();
});

UPDATE- обновление/редактирование полей

Ниже представлен типичный простой код обновления/редактирования значения поля из таблицы БД MySQL средствами Node.js:

//Делаем авторизацию
connect = mysql.createConnection({
    host: "hostname",
    user: "user",
    password: "password",
    database: "dbname"
});
//Создание нового соединения
connect.connect(function(err) {
    if (err) {throw err;}
});
//Обновляем/редактируем поле(я)
connect.query("UPDATE tableName SET colName1 = 'val1' WHERE colName2 LIKE 'keyValue'", function (err, result) {
    if (err) {throw err};
    //********Уведомляем клиента об удачной операции обновления/редактирования
    //res.json({"flag":"myFlag", "result":result});
    //********Уведомляем клиента об удачной операции обновления/редактирования
    connect.end();
});

DELETE — удаление полей

Ниже представлен типичный простой код удаления строки из таблицы БД MySQL средствами Node.js:

//Делаем авторизацию
connect = mysql.createConnection({
    host: "hostname",
    user: "user",
    password: "password",
    database: "dbname"
});
//Создание нового соединения
connect.connect(function(err) {
    if (err) {throw err;}
});
//Удаляем поле(я)
connect.query("DELETE FROM tableName WHERE colName1 LIKE 'keyValue'", function (err, result) {
    if (err) {throw err;}
    //**************Уведомляем клиента об удачном удалении
    //res.json({"flag":"myFlag", "result":result});
    //**************Уведомляем клиента об удачном удалении
    connect.end();
});

 

Пулл соединений в MySQL/Node.js

В примерах выще используется обычный подход соединения, ниже приведем код для пулл-соединения:

var mysql = require('mysql');
var dbConfig = {
    host: "myhost",
    user: "user",
    password: "password",
    database: "dbname",
    port:3306
};
var mysqlPool  = mysql.createPool(dbConfig);
mysqlPool.getConnection(function(err, connection) {
    if(err) throw err;
    connection.query("SELECT * FROM user where email LIKE 'myUserName'", function(err, result, fields) {
        if(err) {
            connection.release();
            console.error(err);                   
            return;
        }
        res.json({"key":data.key,"result":result});
        connection.release();
    });
});

Отправка AJAX — запроса через Vue.js к удаленному серверу

AJAX — взаимодействие — это , пожалуй, первое, с чего нужно начинать, если мы хотим разработать клиент-серверное приложение по методологии REST.

Но, что, если вместо привычного нам jQuery мы хотим использовать Vue.js? Для этого есть несколько способов и один из них — это использование модуля axios.

Использование модуля axios

Данный модуль позволяет организовать связь между браузером, где расположено наше приложение с сервером, где установлен Node.js. Поэтому, установка данного модуля заключается:

  • в установка модуля на сервер через npm;
  • в подключении клиентской версии модуля к нашему приложению.

Для установки на сервер выполняем команду:

npm install axios

Для установки на стороне клиента устанавливаем через bower:

bower install axios

или подключаем исходник через CDN — ссылку:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

Следующий код отправляет запрос на сервер и возвращает данные на этапе загрузки страницы  и работает в версии EcmaScript 5:

 var appIndex = new Vue({
            el: '#app',
            data: {
                regions: []
            },
            methods: {},
            watch: {},
            created: function () {},
            mounted: function () {
                var self = this;
                axios
                    .post("http://83.220.168.205:3000/location",
                    {
                        key: "SELECT"
                    })
                    .then(function(response){
                        self.regions = response.data.result;
                    }).catch(function (error) {
                        console.log(error);
                    });
            }
            
        });

То же самое в EcmaScript 6:

var appIndex = new Vue({
        el: '#app',
        data: {
            regions: []
        },
        methods: {},
        watch: {},
        created: function () {},
        mounted: function () {
            axios
                .post("http://83.220.168.205:3000/location",
                {
                    key: "SELECT"
                })
                .then((response)=>{
                    this.regions = response.data.result;
                }).catch((error)=>{
                    console.log(error);
                });
        }
        
    });    

Работа через менеджер версий Node.js (NVM)

Что такое NVM?

NVM(Node Version Manager) — это простой bash — скрипт, который позволяет упралять(устанавливать, обновлять, активировать, удалять) разные версии Node.js на одной машине так, что они выполняются в изолированных друг от друга средах. Таким образом, можно работать с разными версиями одного программного обеспечения не задевая или разрушая их модульные зависимости.

Почему NVM?

В любой момент вы захотите работать с различными проектами, используя различные версии Node.js и NVM позволяет устанавливать разные версии для различных проектов. NVM позволяет работать  с разными версиями посредством сессий, при котором каждая сессия соответствует версии Node.js.

Установка NVM

Установка на Linux/Ubuntu очень легко делается, сначала надо будет скачать через ссылку, указав версию(на момент написания версия была v0.33.8 и это можно проверить по ссылке на официальном репозитории).

Скачка через curl:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

или через wget:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

Возможно, что после установки вам придется закрыть и еще раз открыть консоль, но в большинстве этого не требуется.

Скрипт клонирует репозиторий nvm в директорию  ~/.nvm и добавляет исходные строки в наш профиль в виде:   ~/.bash_profile~/.zshrc~/.profile или ~/.bashrc

Установка Node.js используя NVM

Давайте рассмотрим процесс установки Node.js через NVM и это легко. Перед тем, как установить Node.js, нам необходимо узнать какие версии на данный момент доступны для загрузки и установки и для этой проверки есть команда:

nvm ls-remote

Если в списке есть желаемая версия, то ее можно установить через команду с указанием этой версии:

nvm install 5.0

И потом можно менять оболочки(сессии) использования версии через команду:

nvm use 5.0

Использование NVM

Чтобы посмотреть список установленных версий Node.js можно набрать команду:

nvm ls

И если мы в большинстве используем определенную версию Node.js, то можем установить ее по умолчанию:

nvm alias default 5.0

И все это дело можно гибко настраивать, создавая файл .nvmrc в корневой директории проекта с указанием необходимых данных версии Node.js для запуска проекта.

 

Заключение

Управление версиями на одной машине — это ключевая задача, но утомительная. Задачи должны быть автоматизированы и для этого и создавался NVM, который помогает нам управлять различными версиями Node.js без труда. Дополнительно про возможности NVM можно почитать на официальной странице репозитория.