Как включить данный режим в index.js

#node.js

#node.js

Вопрос:

У меня есть этот данный модуль в config.js . Я хочу включить это мое index.js . Я пробовал несколько способов, но переменная конфигурации всегда не определена. Я пробовал так.

 const config = require('./config') //undefined
const config = require('./config')("dev") //error
const config = require('./config')["dev"] // error
const config = require('./config').get("dev")
  

Вот как я его запускаю

 // my command.
 npm run start:dev

"scripts": {
    "start:prod": "set NODE_ENV=prod pm2 start index.js --watch",
    "start:dev": "set NODE_ENV=dev amp;amp; node index.js"
  },
  

Вот модуль

 let env = process.env.NODE_ENV; 
require('dotenv').config();
const dev = {
    app: {
        port: parseInt(process.env.DEV_APP_PORT) || 3000
    },
    db: {
        host: process.env.DEV_DB_HOST || 'localhost',
        port: parseInt(process.env.DEV_DB_PORT) || 27017,
        name: process.env.DEV_DB_NAME || 'myDB',

    },
    imagePath: "./profileImages/",
    LogFillePath: "logs/combined.log",
    ErrorFilePaht: "logs/error.log",
    JwtSecret: process.env.JWT_SECRET
};
const prod = {
    app: {
        port: parseInt(process.env.PROD_APP_PORT) || 9000
    },
    db: {
        host: process.env.PROD_DB_HOST || 'localhost',
        port: parseInt(process.env.PROD_DB_PORT) || 27017,
        name: process.env.PROD_DB_NAME || 'myDB'
    },
    imagePath: "./profileImages/",
    LogFillePath: "logs/combined.log",
    ErrorFilePaht: "logs/error.log",
    JwtSecret: process.env.JWT_SECRET
};

const config = {
    dev,
    prod
};

module.exports = config[env];
  

У меня есть этот данный модуль в config.js . Я хочу включить это мое index.js . Я пробовал несколько способов, но переменная конфигурации всегда не определена.
Я пробовал так.

Комментарии:

1. попробуйте без пробелов set NODE_ENV=devamp;amp;node index.js , я попробовал ваш mac-код, и он работает нормально.

Ответ №1:

Попробуйте что-то подобное для вашего config.js :

 require("dotenv").config();

const dev = {
  // ...
};
const prod = {
  // ...
};

const configs = {
  dev,
  prod,
};

const config = configs[process.env.NODE_ENV];

if (!config) throw new Error("No valid configuration found, ensure your NODE_ENV is properly set");

module.exports = config;
  

Тогда вы можете просто

 const config = require('./config');
  

Комментарии:

1. конфигурация по-прежнему не определена с ошибкой «Не найдена допустимая конфигурация, убедитесь, что ваш NODE_ENV установлен правильно», хотя у меня есть console.info печать того, что env является dev в верхней части config.js досье.

2. Если вы добавите NODE_ENV=dev в свой .env файл?

3. Спасибо, я понял это, в скрипте было место между dev и amp;amp; «start:dev»: «set NODE_ENV=dev amp;amp; node index.js »