【问题标题】:Node.js Environment Variable configure for windows and Linux为 Windows 和 Linux 配置 Node.js 环境变量
【发布时间】:2019-11-01 07:43:21
【问题描述】:

我正在 Windows 10 上开发 Node.js 应用程序。但我将在 Linux 服务器中部署我的应用程序。我正在尝试遵循 Node.js 应用程序开发的良好实践。

一种好的做法是将 PORT、HOST、debug_logic 等系统变量从源代码中分离出来,并在部署时将它们作为环境变量提供。

如何实现我的应用程序的以下功能?

  1. 在Windows 10下开发应用,在Linux服务器上部署,轻松提供环境变量
  2. 希望在应用程序开发时进行调试,并在使用环境变量进行部署时停止调试。

我在 package.json scripts 键下添加了以下脚本。

"start": "set \"PORT=80\" & set \"HOST=localhost\" & node server.js"

现在有点工作。但我有更多的环境变量在未来工作,而且,我也必须为 Linux 做这件事。

我也知道这可以使用 .env 文件来实现,并尝试使用 dotenv 模块,但也不喜欢该模块。

【问题讨论】:

  • @jonrsharpe 哦我忘了提,我也试过这个 npm 包,但似乎这在 windows cmd 中有问题。
  • 那么这些问题是什么?也许问一个具体的问题(或在他们的回购中提出一个问题)。或者扩展“不喜欢” 的确切含义。或者只是将 Linux 子系统用于开发。

标签: node.js environment-variables


【解决方案1】:

你可以使用这个包https://www.npmjs.com/package/cross-env来设置环境变量,例如:

"start": "cross-env \"PORT=80\" & cross-env \"HOST=localhost\" & node server.js"

【讨论】:

    【解决方案2】:

    这就是容器化应运而生的地方。您可以使用docker,因为它是独立于应用程序的操作系统。您可以从this link here 了解如何为 windows 安装 docker。我会告诉你如何开始。

    在您的项目根目录中添加以下Dockerfile

    FROM node:alpine
    
    RUN npm init -y
    RUN npm install express
    

    在同一目录中添加docker-compose.yml

    version: "3"
    services:
      app:
        build: ./
        volumes:
          - /path/to/local/app:/app
        working_dir: /app
        environment:
        - DEBUG=1
        - PORT=3000
        ports:
          - 3000:3000
        command: node server.js
    

    如您所见,environment 键可以保存您想要保存的所有变量,抛出您的应用程序。 在应用程序根目录中运行完成后:docker-compose up -d 并检查 http://localhost:3000

    Docker 可以在 Windows 和 Linux 中安装和部署。您可以查看文档以获取更多详细信息。

    【讨论】:

    • 谢谢@MED,我已经通过了 docker 容器。尽快学习 Docker 将是一个明智的决定。我还有一个问题要问你。如果我使用 express、mongoose、socket.io 等 3/4 节点模块,是否需要将所有模块添加到 Dockerfile 中?有什么方法可以使用单个命令安装所有模块?
    • 您也将把它包含在 Dockerfile 中,全部放在一行 RUN npm install express mongoose socket.io 中,如果您需要在工作过程中添加新模块。您可以在同一行添加然后运行docker-compose build 来添加和安装新模块,然后使用docker-compose up 正常运行它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    相关资源
    最近更新 更多