NodeJS

Содержание
Введение
Установка
Установка в Linux
Установка последней версии nodejs в Linux
Начало работы
Создать файл
Скачать картинку из интернета
Ошибки
Похожие статьи

Введение

Node или Node.js — программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код), превращающая JavaScript из узкоспециализированного языка в язык общего назначения.

Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через свой API , написанный на C++ , подключать другие внешние библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript-кода.

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

Также есть возможность разрабатывать на Node.js и десктопные оконные приложения (при помощи NW.js, AppJS или Electron для Linux , Windows и macOS) и даже программировать микроконтроллеры (например, tessel, low.js и espruino).

В основе Node.js лежит событийно-ориентированное и асинхронное (или реактивное) программирование с неблокирующим вводом/выводом.

Установка

Скачайте Nodejs с официального сайта nodejs.org

Выбираем версию LTS (Recommended for most users)

Должен загрузиться файл .msi, например node-v10.16.3-x64.msi

Устанавливаем и затем проверяем версию командой

$ node -v

v10.16.3

Установка в Linux

В Ubuntu Debian и т.д.

sudo apt install nodejs

В CentOS , Rocky , Red Hat, Fedora и т.д.

sudo yum install nodejs

Устанавливаем и затем проверяем версию командой

$ node -v

v10.21.0

Установка последней версии nodejs

В репозитории по умолчанию может быть довольно старая версия nodejs. Это зависит от дистрибутива Linux.

В Fedora, скорее всего будет новая версия.

А в стабильной Ubuntu старая и, например, для работы rfbrowser она не подходит.

Установить нужную версию можно следующим способом

sudo apt -y install curl gcc g++ make
curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt -y install nodejs
node -v

v16.14.0

Если вам нужна не 16-я версия - просто заменить setup_16.x на нужную

Во время установки будет примерно такой лог

## Installing the NodeSource Node.js 16.x repo... ## Populating apt-get cache... + apt-get update Hit:1 http://fi.archive.ubuntu.com/ubuntu jammy InRelease Get:2 http://fi.archive.ubuntu.com/ubuntu jammy-updates InRelease [109 kB] Get:3 http://fi.archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB] Get:4 http://fi.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB] Get:5 http://fi.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [221 kB] Get:6 http://fi.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [102 kB] Fetched 644 kB in 0s (1,614 kB/s) Reading package lists... Done ## Confirming "jammy" is supported... + curl -sLf -o /dev/null 'https://deb.nodesource.com/node_16.x/dists/jammy/Release' ## Adding the NodeSource signing key to your keyring... + curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | tee /usr/share/keyrings/nodesource.gpg >/dev/null ## Creating apt sources list file for the NodeSource Node.js 16.x repo... + echo 'deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x jammy main' > /etc/apt/sources.list.d/nodesource.list + echo 'deb-src [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x jammy main' >> /etc/apt/sources.list.d/nodesource.list ## Running `apt-get update` for you... + apt-get update Hit:1 http://fi.archive.ubuntu.com/ubuntu jammy InRelease Hit:2 http://fi.archive.ubuntu.com/ubuntu jammy-updates InRelease Hit:3 http://fi.archive.ubuntu.com/ubuntu jammy-backports InRelease Hit:4 http://fi.archive.ubuntu.com/ubuntu jammy-security InRelease Get:5 https://deb.nodesource.com/node_16.x jammy InRelease [4,583 B] Get:6 https://deb.nodesource.com/node_16.x jammy/main amd64 Packages [774 B] Fetched 5,357 B in 0s (13.5 kB/s) Reading package lists... Done ## Run `sudo apt-get install -y nodejs` to install Node.js 16.x and npm ## You may also need development tools to build native addons: sudo apt-get install gcc g++ make ## To install the Yarn package manager, run: curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update && sudo apt-get install yarn

Начало работы

Создадим папку для небольшой демонстарции возможностей nodejs.

Перейдём в ней и создадим там файл test.js

$ mkdir test-nodejs
$ cd test-nodejs
$ touch test.js

Откроем файл текстовый редактором. Я обычно пользуюсь Visual Studio Code vi или Sublime Text

первый мне нравится, а vi просто обычно везде установлен по умолчанию.

Создание файла

Сейчас Вы узнаете, как с помощью nodejs можно создавать файлы.

В файл test.js внесём следующие изменения

var fs = require('fs');

Эта строка означает, что переменная1 fs теперь будет вызывать модуль fs.

Про возможности модуля fs можно прочитать в документации: nodejs.org/api/fs.html .

В следующей части кода мы напишем функцию, которая создаст файл и обработает возможные ошибки2

fs.writeFile(__dirname + "/index.html", "<h1>HeiHei.ru</h1>", (err)=>{
if (err) throw err;}
console.log("The file has been saved!");}
});

Про команду fs.writeFile можно прочитать в документации: nodejs.org/api/fs.html.

Скачать картинку из интернета

Первым делом подключим модуль https

Создадим переменную с таким же именем

var https = require('https');

Допустим мы хотим скачать с сайта HeiHei.ru картинку с отдыхающими на солнце черепахами из парка Ла Палома .

Создадим переменную

var myPhotoLocation = 'https://www.heihei.ru/Spain/cities/
benalmadena/img/bmd61.jpg'

И используем метод https.get 3

https.get(myPhotoLocation, (res) =>{ res.pipe(fs.createWriteStream(__dirname +"/Turtle.jpg")); })

Не забываем, что для использования fs нужно сперва объявить переменную.

Скрипт целиком:

const fs = require('fs'); const https = require('https'); var myPhotoLocation = 'https://www.heihei.ru/Spain/cities/benalmadena/img/bmd61.jpg'; https.get(myPhotoLocation, (res) => { res.pipe(fs.createWriteStream(__dirname + "/Turtle.jpg")); })

Про метод https можно прочитать на сайте nodejs.org/api/https.html

var myPhotoLocation = 'https://www.heihei.ru/Spain/cities/
benalmadena/img/bmd61.jpg'

А вот так черепахи греются на солнце в парке Ла Палома в Бенальмадене Испания
Фото: www.HeiHei.ru

Комментарии

1

Или

const fs = require('fs');

В нашем примере это не будет играть особой роли. Остановимся на варианте с var

2

Если использовать более старый синтаксис (если не ошибаюсь в районе 7-8 версий) то код будет выглядеть следующим образом

fs.writeFile(__dirname + "/index.html", "<h1>HeiHei.ru</h1>", function(error){
if (error) {return console.log(error);}
else {return console.log(" The file has been saved! ");}
});

3

Старый синтаксис

https.get(myPhotoLocation, function(response){ response.pipe(fs.createWriteStream(__dirname +"/Turtle.jpg")); })

Ошибки

1

Ошибка при установке Nodejs

$ npm install Nodejs --save-dev

npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\ao\Desktop\Sites\heihei\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\ao\Desktop\Sites\heihei\package.json'
npm WARN heihei No description
npm WARN heihei No repository field.
npm WARN heihei No README data

npm WARN heihei No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

+ Nodejs@4.0.2
added 314 packages from 217 contributors and audited 6490 packages in 30.037s
found 0 vulnerabilities

events.js:174 throw er; // Unhandled 'error' event
^
CssSyntaxError: postcss-simple-vars: C:\Users\ao\Desktop\Sites\travel-site\app\assets\styles\modules\_large-hero.css:5:2: Undefined variable $aMadeUpVariable2

Может быть вызвана, например, несуществующей переменной. Допустим Вы добавили цвет как переменную, но нигде её не задали.

TypeError [ERR_INVALID_OPT_VALUE_ENCODING]

$ node test.js

internal/fs/utils.js:60 throw new ERR_INVALID_OPT_VALUE_ENCODING
(encoding); ^ TypeError [ERR_INVALID_OPT_VALUE_ENCODING]: The value "<h1>HeiHei.ru</h1>" is invalid for option "encoding" at assertEncoding (internal/fs/utils.js:60:11) at getOptions (internal/fs/utils.js:182:5) at Object.writeFile (fs.js:1164:13) at Object.<anonymous> (C:\Users\ao\Desktop\Sites\heihei\test-nodejs\test.js:3:4) at Module._compile (internal/modules/cjs/loader.js:778:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)

Скорее всего Вы случайно добавили больше запятых, чем нужно и node решил, что раз после второй запятой идёт не callback а что-то другое - значит Вы задаёте параметр к data. Проверьте структуру команды.

Должно быть так:

fs.writeFile(Название файла или путь к нему, данные например которые Вы хотите внести в файл, callback обычно это err.

У Вас скорее всего:

fs.writeFile(Название файла или путь к нему, данные например которые Вы хотите внести в файл, какой-то неведомый ноду код, callback обычно это err.

Про команду fs.writeFile можно прочитать в документации: nodejs.org/api/fs.html.

Похожие статьи
JavaScript
NodeJS
NPM
Gulp
Playwright

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: