ПРЕДУПРЕЖДЕНИЕ: значение 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: test
NODE_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"]