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 и т.д.

sudo yum install nodejs

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

$ node -v

v10.21.0

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

Создадим папку для небольшой демонстарции возможностей 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 нужно сперва объявить переменную. Скрипт целиком:

var fs = require('fs');

var 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.

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