Npm
Содержание:
16 ответов
Нашел ответ. На всякий случай, если это кому-то поможет, я опубликую это здесь:
Создание символической ссылки решает проблему:
(Моя благодарность и +1 голос bodokaiser ).
ПРИМЕЧАНИЕ: я думаю, что этот пост не является точным дубликатом, потому что этот пост был в некоторой степени вопросом просмотра.
Проблема не в версии узла. Это способ, которым NodeJS устанавливается по умолчанию в Ubuntu. При запуске приложения Node в Ubuntu вы должны запустить вместо
Таким образом, имя приложения, вызываемое в терминале, равно , а не . Вот почему необходима символическая ссылка для простой пересылки всех команд, полученных как , в
Я думаю, вам следует обновить последнюю версию узла
если вы можете получить доступ к узлу на терминале ubuntu с помощью команды nodejs, то эту проблему можно просто решить, используя
-создание символической связи nodejs и узла с помощью
и это может решить проблему
В моем случае установка nodejs-legacy решила проблему.
Просто сделай
И он начнет работать.
Я обнаружил, что это часто ошибка неправильного именования. Если вы устанавливаете из менеджера пакетов, ваш бен может называться nodejs, так что вам просто нужно вставить символическую ссылку так
Если у вас уже установлены nodejs (проверьте с помощью ) и вы не хотите устанавливать другой пакет, вы можете от имени пользователя root
Когда я использовал gulp, я получил эту ошибку.
/usr /bin /env: «узел»: такого файла или каталога нет
Это было удалено, выполнив следующую команду, вы должны иметь в виду, что каталог /usr /bin имеет все разрешения.
это работает для меня ..
Хотя — очевидное простейшее исправление, пояснение:
Этот совет появляется при установке .
Так что какое-то другое известное средство (я не знаю, что оно делает. Хотя оно известно для репозиториев Ubuntu, оно не установлено по умолчанию в 16.04) занимает это пространство имен.
Было бы неплохо, если бы Ubuntu предложила совет, как исправить это «чисто», если бы не делала вручную то, что в противном случае сделал бы пакет. (столкновение остается столкновением … если +, когда это произойдет)
Для этого есть два решения:
a) Установите переменную PATH, включающую «/usr /local /bin»
б) Создайте символическую ссылку на «/usr /bin», которая уже находится в вашем PATH
Надеюсь, это поможет.
В моем случае ссылка работала НЕ , как следует
Но вы можете открыть /usr /local /bin /lessc от имени пользователя root и изменить первую строку с узла на nodejs.
Просто переименуйте команду или имя файла с помощью этой команды
В зависимости от того, как вы установили свой узел, большую часть времени он может не находиться в /usr /bin /, в моем собственном случае это было то, что я использовал nvm для установки, поэтому мой узел находился в ./nvm/versions.
Используя эту команду Я нашел путь, но чтобы упростить работу, вы можете запустить эту команду.
Приведенная выше команда получит местоположение вашего узла и создаст для вас ссылку.
Для меня принятый ответ еще не сработал. Я начал как предложено здесь:
После этого я получил следующую ошибку:
Решением было загрузить самую последнюю версию узла с https://nodejs.org/en/скачать /.
Тогда я сделал:
Теперь обновление прошло успешно: изменено с 3.2.1 на 6.4.1
? API Usage
A function that executes a given command in a new child process with the given environment and options
-
{ }
- { }: The command to execute (, , …)
- { }: List of arguments to pass to the ()
-
{ }
- { }: Custom path to .env file to read from (defaults to: )
- { }: Should fall back to default file if custom path does not exist
-
{ }
- { }: List of environment to read from the file
- { }: Custom path to the file (defaults to: )
-
{ }
- { }: Expand values passed to (default: )
- { }: Prevent file vars from overriding existing vars (default: )
- { }: Ignore any errors thrown by env-cmd, used to ignore missing file errors (default: )
- { }: Runs command inside a new shell instance (default: )
- { }: Prints extra debug logs to (default: )
- Returns { }: key is env var name and value is the env var value
A function that parses environment variables from a or a file
-
{ }
-
{ }
- { }: Custom path to .env file to read from (defaults to: )
- { }: Should fall back to default file if custom path does not exist
-
{ }
- { }: List of environment to read from the file
- { }: Custom path to the file (defaults to: )
- { }: Prints extra debug logs to (default: )
-
{ }
- Returns { }: key is env var name and value is the env var value
extraAccessors
When calling you can also pass an optional parameter containing
additional accessors that will be attached to any variables gotten by that
instance.
Accessor functions must accept at least one argument:
{*} value: The value that the accessor should process.
Important: Do not assume that is a string!
Example:
const{from}=require('env-var')process.env.ADMIN='admin@example.com'constenv=from(process.env,{asEmail(value)=>{constsplit=String(value).split('@')if(split.length!==2){thrownewError('must contain exactly one "@"')}return value}})let validEmail =env.get('ADMIN').asEmail()
The accessor function may accept additional arguments if desired; these must be
provided explicitly when the accessor is invoked.
const{from}=require('env-var')process.env.ADMIN='admin@example.com'constenv=from(process.env,{asEmail(value,requiredDomain)=>{constsplit=String(value).split('@')if(split.length!==2){thrownewError('must contain exactly one "@"')}if(requiredDomain &&(split1!== requiredDomain)){thrownewError(`must end with @${requiredDomain}`)}return value}})let validEmail =env.get('ADMIN').asEmail()let invalidEmail =env.get('ADMIN').asEmail('github.com')
This feature is also available for TypeScript users. The type is
exposed to help in the creation of these new accessors.
import{from,ExtensionFn,EnvVarError}from'env-var'process.env.ADMIN='admin@example.com'constasEmailExtensionFn<string>=(value)=>{constsplit=String(value).split('@')if(split.length!==2){thrownewError('must contain exactly one "@"')}returnvalue}constenv=from(process.env,{asEmail})env.get('ADMIN').asEmail()
You can view an example of composing built-in accessors made available by
in an extra accessor at examples/custom-accessor.js.
Why .env?
Basically, a file is an easy way to load custom configuration variables
that your application needs without having to modify .htaccess files or
Apache/nginx virtual hosts. This means you won’t have to edit any files outside
the project, and all the environment variables are always set no matter how you
run your project — Apache, Nginx, CLI, and even PHP’s built-in webserver. It’s
WAY easier than all the other ways you know of to set environment variables,
and you’re going to love it!
- NO editing virtual hosts in Apache or Nginx
- NO adding flags to .htaccess files
- EASY portability and sharing of required ENV values
- COMPATIBLE with PHP’s built-in web server and CLI runner
PHP dotenv is a PHP version of the original Ruby
dotenv.
Установка Python и Pip
Pip является менеджером пакетов для Python. Именно с помощью него обычно устанавливаются модули/библиотеки для разработки в виде пакетов. В Windows Pip можно установить через стандартный установщик Python. В Ubuntu Pip ставится отдельно.
Установка Python и Pip в Windows
Далее в таблице с файлами выбираем «Windows x86-64 executable installer» для 64-битной системы или «Windows x86 executable installer» для 32-битной. И запускаем скачанный установщик, например, для версии Python 3.8.1 он называется .
Во время установки ставим галочку возле Add Python 3.x to PATH и нажимаем Install Now:
Установка Python и Pip в Ubuntu
В Ubuntu установить Python 3 можно через терминал. Запускаем его и вводим команду установки. Вторая команда выводит версию Python.
Далее устанавливаем Pip и обновляем его. После обновления необходимо перезапустить текущую сессию (или перезагрузить компьютер), иначе возникнет ошибка во время вызова Pip.
? Advanced Usage
For more complex projects, a file can be defined in the root directory and supports
as many environments as you want. Simply use the flag and provide which environments you wish to
use from the file. Using multiple environment names will merge the environment variables
together. Later environments overwrite earlier ones in the list if conflicting environment variables
are found.
.rc file
{"development"{"ENV1""Thanks","ENV2""For All"},"test"{"ENV1""No Thanks","ENV3""!"},"production"{"ENV1""The Fish"}}
Terminal
./node_modules/.bin/env-cmd -e production node index.js./node_modules/.bin/env-cmd -e test,production node index.js
Prevents overriding of existing environment variables on and within the current
environment.
If the file does not exist at the provided custom path, then use the default
fallback location env file instead.
Executes the command within a new shell environment. This is useful if you want to string multiple
commands together that share the same environment variables.
Terminal
./node_modules/.bin/env-cmd -f ./test/.env --use-shell "npm run lint && npm test"
EnvCmd supports reading from asynchronous files. Instead of using a file, pass in a
file that exports either an object or a resolving to an object (). Asynchronous
files are also supported using file extension and resolving to an object with top level environment
names ().
Terminal
./node_modules/.bin/env-cmd -f ./async-file.js node index.js
EnvCmd supports expanding values passed in as arguments to the command. The allows a user
to provide arguments to a command that are based on environment variable values at runtime.
Terminal
./node_modules/.bin/env-cmd -x node index.js --user=$USER
EnvCmd supports the flag the suppresses all errors generated by
while leaving errors generated by the child process and cli signals still usable. This
flag is primarily used to allow to run in environments where the
file might not be present, but still execute the child process without failing
due to a missing file.
Пример работы с пакетами
PIP позволяет устанавливать, обновлять и удалять пакеты на компьютере. Ниже попробуем разобраться с работой менеджера pip на примере парсинга названий свежих статей на сайте habr.com.
- установим нужные пакеты;
- импортируем пакет в свой скрипте;
- разберемся, что такое
- обновим/удалим установленные пакеты;
Приступим
Шаг #1. Установка.
Для начала, нам необходимо установить beautifulsoup4 – библиотеку для парсинга информации с веб-сайтов.
pip найдет последнюю версию пакета в официальном репозитории pypi.org. После скачает его со всеми необходимыми зависимостями и установит в вашу систему. Если вам нужно установить определенную версию пакета, укажите её вручную:
Данная команда способна даже перезаписать текущую версию на ту, что вы укажите.
Также для работы beautifulsoup нам понадобится пакет lxml
️ Важный момент: по умолчанию pip устанавливает пакеты глобально. Это может привести к конфликтам между версиями пакетов. На практике, чтобы изолировать пакеты текущего проекта, создают виртуальное окружение (virtualenv).
Шаг #2. Импортирование в скрипте.
Для того, чтобы воспользоваться функционалом установленного пакета, подключим его в наш скрипт, и напишем простой парсер:
Шаг #3. requirements.txt.
Если вы просматривали какие-либо проекты Python на Github или где-либо еще, вы, вероятно, заметили файл под названием requirements.txt. Этот файл используется для указания того, какие пакеты необходимы для запуска проекта (в нашем случае beautifulsoup4 и lxml).
Файл создается командой:
и выглядит следующим образом:
Теперь ваш скрипт вместе с файлом requirements.txt можно сохранить в системе контроля версий (например git).
Для работы парсера в новом месте (например на компьютере другого разработчика или на удаленном сервере) необходимо затянуть файлы из системы контроля версий и выполнить команду:
Шаг #4.Обновление/удаление установленных пакетов.
Команда выведет список всех устаревших пакетов. Обновить отдельно выбранный пакет поможет команда:
Однако бывают ситуации, когда нужно обновить сразу все пакеты из requirements.txt. Достаточно выполнить команду:
Для удаления пакета выполните:
Для удаления всех пакетов из requirements.txt:
Мы разобрали основы по работе с PIP. Как правило, этого достаточно для работы с большей частью проектов.
Examples
constenv=require('env-var');process.env.STRING='test';process.env.INTEGER='12';process.env.BOOL='false';process.env.JSON='{"key":"value"}';process.env.COMMA_ARRAY='1,2,3';process.env.DASH_ARRAY='1-2-3';constallVars=env.get();conststringVar=env.get('STRING').required().asString();constintVar=env.get('INTEGER').asInt();constfloatVar=env.get('FLOAT').default('23.2').asFloat();constboolVar=env.get('BOOL').required().asBool();constjsonVar=env.get('JSON').asJson();constcommaArray=env.get('COMMA_ARRAY').asArray();constcommaArray=env.get('DASH_ARRAY').asArray('-');constenumVal=env.get('ENVIRONMENT').asEnum('dev','test','live')
A property that exposes the built-in accessors that this module uses to parse
and validate values. These work similarly to the asString() and other
accessors exposed on the variable type documented above, however they accept
a String as their first argument, e.g:
constenv=require('env-var')constmyJsonDirectAccessor=env.accessors.asJson(process.env.SOME_JSON)constmyJsonViaEnvVar=env.get('SOME_JSON').asJson()
All of the documented asX() accessors above are available. These are useful
if you need to build a custom accessor using the extraAccessors functionality
described below.
? Help
Usage: _ <command> Options: -v, --version output the version number -e, --environments The rc file environment(s) to use -f, --file Custom env file path (default path: ./.env) --fallback Fallback to default env file path, if custom env file path not found --no-override Do not override existing environment variables -r, --rc-file Custom rc file path (default path: ./.env-cmdrc(|.js|.json) --silent Ignore any env-cmd errors and only fail on executed program failure. --use-shell Execute the command in a new shell with the given environment --verbose Print helpful debugging information -x, --expand-envs Replace $var in args and command with environment variables -h, --help output usage information