Введение | |
Установка | |
Установка в 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
sudo apt install nodejs
В CentOS 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'
Или
const fs = require('fs');
В нашем примере это не будет играть особой роли. Остановимся на варианте с var
Если использовать более старый синтаксис (если не ошибаюсь в районе 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! ");}
});
Старый синтаксис
https.get(myPhotoLocation, function(response){ response.pipe(fs.createWriteStream(__dirname +"/Turtle.jpg")); })
Ошибка при установке 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
Может быть вызвана, например, несуществующей переменной. Допустим Вы добавили цвет как переменную, но нигде её не задали.
$ 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. Статьи можно расшарить в соцсетях, нажав на иконку сети:
|