【问题标题】:Starting Node server from Scala app with environment variables使用环境变量从 Scala 应用程序启动节点服务器
【发布时间】:2021-11-19 04:13:40
【问题描述】:

我正在尝试使用 shell 脚本从 Scala 应用程序启动 Node 服务器,但是当我尝试添加环境变量时出现以下错误:

Exception in thread "main" java.io.IOException: Cannot run program "TEST_ENV_VAR=fake-key": error=2, No such file or directory

代码如下所示:

import java.nio.file.{Files, Path}
import scala.language.postfixOps

@main def app() =
    val path = Path.of(scala.sys.props.get("user.home").get + "/projects")
    
    s"TEST_ENV_VAR=fake-key node $path/node-server/server.js" !!

看起来它正在尝试运行环境变量而不是服务器。有没有办法让它正确识别它们?在不包含环境变量的情况下,我已经能够使用此方法成功运行节点服务器。

谢谢!

【问题讨论】:

  • TEST_ENV_VAR=fake-key 是一个 shell 命令,当您使用不在 shell 中的进程 API 从 JVM 运行程序时,您可以启动 bash,然后在 bash 中启动您的命令,但这是不必要的,应该有一种方法可以将 env 传递给进程以运行,可能更容易直接调用 Java API,而不是使用 Scala 中的花哨的 DSL .

标签: node.js scala shell environment-variables


【解决方案1】:

这是一个使用scala.sys.process.Process 对象的示例:

import java.io.File

import scala.sys.process.*

@main def app() =
  val file = File(scala.sys.props.get("user.home").get + "/projects")
  Process("node node-server/server.js", Some(file), "TEST_ENV_VAR" -> "fake-key").!!

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多