javascript - 在 NodeJS 中使用 .ENV 值,Procfile 定义中出现必需的键错误

标签 javascript node.js foreman env

我正在尝试使用 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);

最佳答案

要使用 Foreman,您需要在项目的根目录中创建一个名为 Procfile 的文件 - 该文件告诉 foreman 如何运行您的项目。

在此文件中,您可能需要添加如下行:

web: node server.js

或者,使用任何命令来“启动”您的 Web 服务。然后,如果您从命令行运行 foreman start,foreman 将解析 Procfile,然后为您运行该命令 (node server.js)。

关于javascript - 在 NodeJS 中使用 .ENV 值,Procfile 定义中出现必需的键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27662040/

相关文章:

javascript - Javascript 中 consice 方法中的词法 this

node.js - 请求在 POSTMAN 中有效,但在 FETCH 中无效

ruby-on-rails - 如何在运行 bundle exec foreman start 时摆脱 Permission denied (publickey) 错误?

javascript - UIWebView 和 sessionStorage 中的隐私浏览模式

javascript - 带一个参数的反向数组函数。 (JavaScript)

javascript - 仅在选定的 ng-repeat 元素上调用函数

javascript - 从表行获取控件 ID

javascript - 如何计算 Node.js 包的加载时间损失?

ruby - 如何与工头一起运行多个 bundle 的多个应用程序