Решил это с помощью Адама Хартлеба, ассистента курса в Udemy. Он предложил запустить его с npx, который сработал, после некоторой порчи.
Для всех, у кого есть эта проблема, вот что я сделал:
Я решил эту проблему, проверив исходный код env-cmd, а затем перечитал документы.
Проблема в том, что, по крайней мере, в Ubuntu 18.04 env-cmd плохо работает с нестандартными расположениями файлов.
Чтобы запустить его, у вас должна быть версия Node, которая поддерживает npx. Если вы находитесь в Ubuntu, вам нужно использовать версию узла, которая не поддерживается Canonical. Я решил, что нужно установить NVM и Node 10.15.3
.
как установить NVM и Node LTS
Вам потребуется использовать расположение файла по умолчанию для вашего файла .env:
./.env
Вам нужно будет удалить любые ссылки на нестандартные местоположения файлов, так как их присутствие только разозлит env-cmd. Это будет буквальное зависание. (на самом деле это вызовет ошибку "зависание"). Также будет использовано слово «порождение». Я только говорю вам, что я видел.
Я изменил свой сценарий "dev" на
"dev" : "npx env-cmd nodemon src/index.js"
Теперь должно работать. Пусть боги .env будут милостивы к вашему приложению.
ОБЗОР: Как я туда попал
Предложение Адама "npx env-cmd ./config/dev.env nodemon src / index.js" привело к:
hoo@BadWolf:~/storage/node-task-api v3$ npx env-cmd ./config/dev.env nodemon src/index.js
(node:19209) UnhandledPromiseRejectionWarning: Error: Unable to locate env file at default location (./.env)
at /home/hoo/storage/node-task-api v3/node_modules/env-cmd/dist/get-env-vars.js:47:19
at Generator.throw (<anonymous>)
at rejected (/home/hoo/storage/node-task-api v3/node_modules/env-cmd/dist/get-env-vars.js:5:65)
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:757:11)
at findNodeScript.then.existing (/home/hoo/.nvm/versions/node/v10.15.3/lib/node_modules/npm/node_modules/libnpx/index.js:268:14)
(node:19209) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:19209) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Я проследил проблему до нескольких неопределенных переменных в коде модуля, которые я зарегистрировал в терминале.
hoo@BadWolf:~/storage/node-task-api v3$ npx env-cmd ./config/dev.env nodemon src/index.js
Russ logging from get-env-vars.js 27: getEnvFile({ filePath, fallback }): filePath = undefined
Russ logging from get-env-vars.js 27: getEnvFile({ filePath, fallback }): fallback = undefined
Создание файла .env в ./.env и запуск того же сценария npx (с аргументом файла не по умолчанию)
hoo@BadWolf:~/storage/node-task-api v3$ npx env-cmd ./config/dev.env nodemon src/index.js
spawn ./config/dev.env EACCES
Hangup
Если удалено нестандартное расположение файла, чтобы запустить сервер с помощью команды env-cmd:
npx env-cmd nodemon src/index.js