相关疑难解决方法(0)

设置要检索的节点的环境变量

我正在尝试按照教程说它:

"有几种方法可以加载凭据.

  1. 从环境变量加载,
  2. 从磁盘上的JSON文件加载,

密钥需要如下:

USER_ID, USER_KEY
Run Code Online (Sandbox Code Playgroud)

...这意味着如果您正确设置环境变量,则根本不需要在应用程序中管理凭据."

基于一些谷歌搜索,似乎我需要设置变量process.env?我如何以及在何处设置这些凭据?示例请.

environment-variables node.js

386
推荐指数
12
解决办法
58万
查看次数

无法在我的Node.js应用中读取我的环境变量

我在Ubuntu 12.04上,我只是在学习环境变量.我试图从我的应用程序中读取自定义变量,但它总是显示为undefined.这是我的测试应用程序的代码:

// app.js

console.log('Value: ' + process.env.NODE_ENV);
Run Code Online (Sandbox Code Playgroud)

如果我运行以下命令,您将看到该变量具有值:

$ NODE_ENV=production
$ echo $NODE_ENV
production
Run Code Online (Sandbox Code Playgroud)

我可以echo $NODE_ENV整天和它继续向我展示"生产",但是当我process.env.NODE_ENV在我的Node应用程序中它总是显示"未定义".

$ node app.js
Value: undefined
Run Code Online (Sandbox Code Playgroud)

这里有一个奇怪的部分,如果我显示另一个我知道已经存在的环境变量,比如说process.env.PATH它可以工作.

$ node app.js
Value: /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)

另一个怪癖是该命令printenv list似乎不包含我的自定义变量,NODE_ENV尽管这echo $NODE_ENV显示了正确的值.printenv NODE_ENV没有显示任何内容,但printenv PATH显示正确的值,就像我PATH在节点应用程序中访问时一样.

bash terminal ubuntu environment-variables node.js

13
推荐指数
2
解决办法
1万
查看次数

从流星中的配置文件或环境变量中获取值

这对于存储API密钥或其他敏感信息非常有用.根据我的理解,你可以在本地使用配置文件,但它们不能在meteor.com上运行,但我听说有传言说环境变量很快就会被支持,或者已经是最近发布的了,但我不能找到任何例子.

有人可以提供一个如何从环境变量或其他安全位置检索值的示例吗?

environment-variables configuration-files meteor

9
推荐指数
1
解决办法
3213
查看次数

在node.js中设置一个环境变量,然后在终端中使用它?

好吧,我想在使用node.js执行js文件期间添加环境变量.

像:process.env ['VARIABLE'] ='value';

我正在使用终端使用模块运行js文件,我可以设置变量然后在js文件执行期间使用它,但我想使用"process.env"设置变量,然后当执行结束,我想在终端中使用它,或者在其他js进程中使用它.

我知道可以使用child_process.exec,并使用SET(Windows)或EXPORT(Mac和Linux),但只是询问它是如何可能的,或者使用哪个设计或过程来添加它,只是使用"process.env".

伙计们,提前谢谢.

javascript variables environment-variables node.js

6
推荐指数
1
解决办法
5829
查看次数

从Node.js中设置全局环境变量

我试图从我的node.js应用程序中设置一个全局环境变量.

目标是:

  1. 重新启动APP时,仍应设置环境变量
  2. 打开一个新shell时,它应该是可用的
  3. 如果可能:重新启动时,与1相同.
  4. 它应该适用于Linux,Mac OS X(并且需要Windows的备用SET命令)

这是我做的:

var setEnv = require('child_process')
        .spawn('export GLOBALVARNAME='+my.value,{
          stdio: 'inherit',
          env: process.env
        });
Run Code Online (Sandbox Code Playgroud)

但这导致了

{ [Error: spawn export GLOBALVARNAME=foobar ENOENT]
  code: 'ENOENT',
  errno: 'ENOENT',
  syscall: 'spawn export GLOBALVARNAME=foobar',
  path: 'export GLOBALVARNAME=foobar',
  spawnargs: [] }
Run Code Online (Sandbox Code Playgroud)

我没有在Windows上对此进行测试,但在Mac OS X(和Linux)上,bash上的正确命令是export GLOBALVARNAME=value.对于Windows,正确的命令应该是SET GLOBALVARNAME=value- 不是吗?

所以主要问题是:手动工作出了export GLOBALVARNAME=foobar什么问题?

bash env spawn node.js

6
推荐指数
1
解决办法
6400
查看次数

有条件地检测节点服务器是否在 Docker 容器内运行

我有我的 node.js 代码,我在其中建立了这样的 mongodb 连接: mongodb://localhost:27017/mycollection

现在,我将我的服务器放在一个容器中,将数据库放在另一个容器中,我可以像这样从服务器连接到我的数据库: mongodb://mycontainer:27017/mycollection

我在我的服务器代码/配置中配置了这个连接字符串。

现在,我如何检测一个人是否在容器中运行服务器并相应地获取数据库的连接字符串?

如果他在主机上运行它,我想使用本地主机的第一个连接字符串并连接到主机中的数据库,如果他通过容器连接,我想使用容器链接名称进行连接,如中所述第二种情况。

有没有办法做到这一点?

mongodb node.js docker

6
推荐指数
1
解决办法
1121
查看次数

如何将命令行参数传递给Meteor应用程序?

我想在启动时将命令行参数传递给我的Meteor应用程序.

例如--dev, - test或--prod,指示它是否在dev,test或prod环境中运行.然后它可以在启动时加载不同的资源等...

我在/server/server.js中尝试过类似的东西

var arguments = process.argv.splice(2);
console.log('cmd args: ' + JSON.stringify(arguments,0,4));
Run Code Online (Sandbox Code Playgroud)

我跑了一个测试.还有很多其他只有随机命令行参数.

meteor --dev
Run Code Online (Sandbox Code Playgroud)

控制台中的输出只是这个.

cmd args: [
    "--keepalive"
]
Run Code Online (Sandbox Code Playgroud)

将命令行参数导入Meteor应用程序的最佳方法是什么?

或者,这甚至是解决更高级问题的正确方法吗?如果没有,解决这个区分运行环境的问题的正确方法是什么?

meteor

5
推荐指数
1
解决办法
2373
查看次数

使用 pm2 读取传递给 node.js 的命令行参数

我知道如何使用 pm2 将变量传递给 node.js。但我该如何阅读它们呢? process.argv不包含它。

这就是我指的。

使用pm2将环境变量传递给node.js

更新

pm2 start file_name.js -- -my_port 8080是正确的做法。process.argv将包含参数。

运行pm2 describe file_name仍然显示 args -3000 这是一个缓存值。重新启动系统会给我重新启动之前最后传递的参数,在我的例子中是 3000。

node.js pm2

5
推荐指数
1
解决办法
4419
查看次数

如何在js脚本中读取docker环境变量?

我有一个托管在节点 Docker 容器上的 React 应用程序。我运行它并向它传递一个环境变量

 docker run -t -e "ADMIN_HOST_ENV=http://myapp.app:443/api" -p 3000:3000 "myapp"
Run Code Online (Sandbox Code Playgroud)

如何在应用程序中获取“ADMIN_HOST_ENV”环境变量?

javascript docker reactjs docker-compose devops

5
推荐指数
1
解决办法
9064
查看次数

使用node.js命令行参数作为环境变量

我用以下命令调用我的 node.js 应用程序

node index.js a=5
Run Code Online (Sandbox Code Playgroud)

我想在我的代码中直接使用值“5”作为环境变量,例如

const myNumber = process.env.a
Run Code Online (Sandbox Code Playgroud)

(如此处所述

如果我尝试上述操作,“MyNumber”在运行时未定义。

解决方案

  • Linux:
a=5 node index.js
Run Code Online (Sandbox Code Playgroud)
  • Windows(Powershell):
    $env:a="5";node index.js
Run Code Online (Sandbox Code Playgroud)

environment-variables command-line-arguments node.js

4
推荐指数
1
解决办法
7798
查看次数