ПРЕДУПРЕЖДЕНИЕ: значение NODE_ENV 'test ' не соответствует ни одному имени файла конфигурации развертывания

Получение этого предупреждения при запуске приложения node.js, несмотря на все тесты, предлагающие все в порядке.

Я включил следующий код в мое приложение, чтобы найти ошибку:

console.log('NODE_ENV: ' + config.util.getEnv('NODE_ENV')); console.log('NODE_CONFIG_DIR: ' + config.util.getEnv('NODE_CONFIG_DIR'));

И вывод в терминале:

NODE_ENV: testNODE_CONFIG_DIR: C:\Users\[username]\OneDrive - [Company Name]\Documents\projects\[project name]\server\config

Терминальный выход

Внутри этой папки (проверяется путем копирования и вставки URI в проводник) два файла:

default.json test.json

Настроить содержимое папки

Мне кажется, это правильно, я проверил руководство и ничего не вижу, проверил хиты Google и ответы, похоже, не связаны. Любая помощь будет принята с благодарностью.

4 ответа

Решение

Быстрый ответ:

Используйте что-то вроде cross-env в среде Windows: npm cross-env

Судя по тому, что я могу найти, это относится к категории "Проблемы Windows с NODE_ENV". Установка NODE_ENV отдельно перед запуском приложения приводит к правильной работе среды; любые манипуляции с NODE_ENV внутри скрипта package.json сами по себе приводят к сбою.

Этот ответ на другой вопрос привел меня к перекрестному env пакета, и когда реализовано, как указано в ответе, решает проблему.

Хотя упомянутый пакет в принятом ответе решает проблему, лучше не получать больше зависимостей в вашем проекте. package.json когда то же самое можно отсортировать с помощью простой настройки, как показано ниже: -

В вашем package.json файл, опуская пробел перед &&. Это позволит правильно определить среду (среды) без лишнего пробела после имени.

Если у кого-то еще есть такая же ошибка, обязательно запустите команду jest из корневого каталога вашего проекта, если вы напрямую используете jest cli вместо скрипта npm.

Я использую докер и при запускеset NODE_ENV=production&& node build/src/server.js(сценарий запуска npm в package.json) Я получал ошибку

      WARNING: NODE_ENV value of 'production' did not match any deployment config file names.
WARNING: See https://github.com/node-config/node-config/wiki/Strict-Mode
WARNING: No configurations found in configuration directory:/usr/src/app/config
WARNING: To disable this warning set SUPPRESS_NO_CONFIG_WARNING in the environment.
/usr/src/app/node_modules/config/lib/config.js:179
    throw new Error('Configuration property "' + property + '" is not defined');

Основная причина проблемы заключалась в том, что папка конфигурации внутри корневой папки не копировалась в контейнер докеров. Итак, добавив команду COPY в файл Docker (COPY ./config ./config), я смог заставить ее работать.

      FROM node:lts-alpine3.16 as build
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --silent
COPY . ./
#RUN rm -rf ./.local
#COPY .env.production ./.env
RUN npm run build
RUN ls -d "./build"

FROM node:lts-alpine3.16 as production
ARG NODE_ENV=production
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci --only=production
COPY ./config ./config                      <<<<<<< HERE
COPY --from=build /usr/src/app/build ./build
COPY ./.env.production ./.env
ENV NODE_ENV=production
RUN ls "./build"
CMD ["npm", "start"]
Другие вопросы по тегам