Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Node/Express应用程序--如何根据本地主机与远程服务器更改连接字符串(节点postgress)_Node.js_Heroku_Express_Node Postgres - Fatal编程技术网

Node.js Node/Express应用程序--如何根据本地主机与远程服务器更改连接字符串(节点postgress)

Node.js Node/Express应用程序--如何根据本地主机与远程服务器更改连接字符串(节点postgress),node.js,heroku,express,node-postgres,Node.js,Heroku,Express,Node Postgres,我有一个节点应用程序运行部署在heroku上的express服务器。我使用的是postgres数据库(node postgres),目前应用程序配置了远程数据库的连接字符串 我创建了数据库的本地版本,我想将应用程序配置为在本地主机上运行应用程序时使用不同的连接字符串 我需要以某种方式检测我在哪台服务器上,然后将解析放入if/else类型的语句中。有什么想法或例子吗?我找不到正确的解决方案。为此,您应该使用标准的NodeJS环境变量-NODE\u ENV 在本地计算机上,应将其设置为develop

我有一个节点应用程序运行部署在heroku上的express服务器。我使用的是postgres数据库(node postgres),目前应用程序配置了远程数据库的连接字符串

我创建了数据库的本地版本,我想将应用程序配置为在本地主机上运行应用程序时使用不同的连接字符串


我需要以某种方式检测我在哪台服务器上,然后将解析放入if/else类型的语句中。有什么想法或例子吗?我找不到正确的解决方案。

为此,您应该使用标准的NodeJS环境变量-
NODE\u ENV

在本地计算机上,应将其设置为
development
。在生产服务器上,它通常默认为
生产
,就像在Heroku上一样:

然后,您可以通过
process.env.NODE\u env
从应用程序访问它。这将告诉您应用程序在哪个环境中运行,以及您应该使用哪两种连接。

我建议您使用。在名为config的文件夹中创建一个名为database.js的文件,从应用程序中包含该文件,konfig将进行环境切换

示例

config/database.json:

{
  "development": {
    "postgresql": {
      "connection_string": "postgres://user:pass@localhost/development"
    }
  },
  "production": {
    "postgresql": {
      "connection_string": "postgres://user:pass@ec2.compute-1.amazonaws.com/sdfk23jf"
    }
  }
}
app.js:

...
var config = require('konfig')().database.connection_string;
...
在命令行上运行服务器时使用NODE_ENV,即

NODE_ENV=production node app.js
konfig将自动进行切换,我认为它默认使用“开发”