Использование значения .ENV в NodeJS, ошибка обязательного ключа в определении Procfile

Я пытаюсь использовать пакет foreman, чтобы увидеть, будет ли способ, которым я настроил мой файл .env, работать с использованием в одном из моих файлов JS, но когда я запускаю nf start server.js, я получаю следующие предупреждения, а затем сервер никогда не запускается. Я думал, что это связано с отсутствием вызова переменной в файле server.js, но это ничего не изменило.

[OKAY] Loaded ENV .env File as KEY=VALUE Format
[WARN] No Procfile Found
[OKAY] package.json file found - trying 'npm start'
[OKAY] Trimming display Output to 55 Columns
[WARN] Required Key 'server.js' Does Not Exist in Procfile Definition

Вот как я использую свой файл .env:

.env

DB_CONFIGURATION=mongodb://<user>:<pw>.mongolab.com:6383219/db-name

blogDB.js:

var DB_CONFIG = process.env.DB_CONFIGURATION;

module.exports = {
    url : DB_CONFIG;
}

server.js (где я вызываю файл blogDB)

//Load express
var express = require('express');
var app = express();
var router = express.Router(); // get an instance of the router
var bodyParser = require('body-parser'); // configure app to use bodyParser()
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var session = require('express-session');

app.use(bodyParser.urlencoded({ extended: true})); // get data from a POST method
app.use(bodyParser.json());
app.use(morgan('dev'));
app.use(cookieParser());


var port = process.env.PORT || 8080; // set the port


var blogDB = require('./config/blogDB.js');
mongoose.connect(blogDB.url);

require('./config/passport.js')(passport);


app.set('view engine', 'ejs'); // set ejs as the view engine

app.use(express.static(__dirname + '/public')); // set the public directory

app.use(session({ secret: 'thisisatest' }));
app.use(passport.initialize());
app.use(passport.session());

app.use(flash());



var routes = require('./app/routes');

app.use(routes); // use routes.js


app.listen(port);
console.log('magic is happening on port' + port);

person cphill    schedule 26.12.2014    source источник


Ответы (1)


Чтобы использовать Foreman, вам нужно создать файл с именем Procfile в корне вашего проекта — этот файл сообщает мастеру, как запускать ваш проект.

В этом файле вы можете поместить такую ​​строку:

web: node server.js

Или любая команда, используемая для «запуска» вашего веб-сервиса. Затем, если вы запустите foreman start из командной строки, мастер проанализирует Procfile, а затем запустит эту команду для вас (node server.js).

person rdegges    schedule 26.12.2014
comment
Спасибо. Это решило мою проблему. - person cphill; 27.12.2014