Home Credit Карта рассрочки "Свобода" [CPS] RU
Рокетбанк [CPS] RU
GeekBrains
PureVPN WW
EnglishDom
ВелоСклад
Напишем
Tui Ингосстрах [CPS] RU
InternetUrok
Foxford
Рокетбанк [CPS] RU
Harman.club (JBL & Harman Kardon)
Рокетбанк [CPS] RU
↑↑

↓↓
Флаг России Флаг Англии
🏠 | 💻 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.
































Вы нашли то, что искали на сайте?







Или оцените по десятибальной шкале

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

Например: у нас есть статья про аэропорт Хельсинки и про аэропорт Риги но в выдаче по Риге всё равно статья про Хельсинки.

Если статья Вам помогла, нажимайте ДА. Так мы поймём, что переделывать её не нужно.

Занятно наблюдать в вебвизоре, как люди копируют текст, например вежливого отказа в трудоустройстве на английском но игнорируют кнопку ДА.

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








Timeweb Many GEOs







Domino's Pizza