↑↑

↓↓
🏠 | 💻 IT |

Nodejs

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

Введение

Установка

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

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

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

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

$ node -v

v10.16.3

 GeekBrains

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

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

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

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

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

первый мне нравится, советую изучить его возможности в этом руководстве о Sublime, а 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'

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

Комментарии

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

If you have any questions - feel free to ask in the comments section below

Share in social media: