【问题标题】:Is there a way to determine the host OS and node version based on the node_modules folder?有没有办法根据 node_modules 文件夹确定主机操作系统和节点版本?
【发布时间】:2021-09-16 14:02:40
【问题描述】:

是否有一种或多或少简单的方法可以通过查看 node_modules 文件夹来判断 (1) 哪个操作系统(Windows 或 Linux),以及 (2) 在哪个版本的 nodejs npm install 上运行?我尝试查看 node_modules/.bin,但同时看到了 bash 和 .cmd 文件。

感兴趣的人的快速背景故事:我维护多个应用程序,其中一个是我们继承的遗留 Angular 应用程序。这个应用程序非常“脆弱”和敏感;上次我们部署它时,团队花了几天时间才让环境“恰到好处”。我们在 Linux 和 Windows 上有多个 chroot 环境和虚拟机,以及具有不同 nodejs 设置的用户配置文件,这些都针对我们管理的一些遗留应用程序进行了微调。

这个特定应用程序的问题是我需要对其进行一些小改动并重新编译它,而管理它的人目前无法访问。我非常担心通过触摸 node_modules 文件夹来“破坏”任何东西,因为我知道团队花了很长时间和反复试验才能让一切都正确(包括软件包版本,其中很多都是手动尝试和安装的,等等)。因此,在进行更改后,我需要确保从相同的环境中调用所有内容。

【问题讨论】:

  • 在一个如此脆弱的应用程序的上下文中,它需要 几天 才能在大概是开发环境的情况下进行常规安装(因为在生产环境中,您通常只是服务构建输出),为什么没有记录环境详细信息?
  • 可以使用进程对象来判断。
  • 看来你只有两个选择。 1) 从头开始​​完整记录如何为特定环境构建和配置此应用程序,以便您可以仅从源代码开始并按照特定程序构建和部署它。 2) 解决大问题并采用现有的部署并修补它只是您的更改,这样您就不必重新发明其余的配置。显然,有人需要在某个时候执行 #1,所以这不是一个持续存在的问题。
  • @jonrsharpe 感谢您的回复。是的,我们知道它应该被记录下来;这显然是一个重大的过程失败。我们假设我们现在已经重写了应用程序,但事实就是这样。你是对的——我们只将构建输出保存在 prod 中,但我现在需要节点环境来重新编译它(客户端确实需要一些 css 更改)所以我正在尝试重新创建相同的构建环境而不破坏“脆弱”节点模块文件夹。
  • @jfriend00 感谢您的回复。有关详细信息,请参阅我上面的评论,但是是的,我们意识到应该完成 #1。

标签: node.js angular npm node-modules npm-install


【解决方案1】:

使用OS模块

var os = require('os');
os.platform(); // 'darwin'
os.release(); //'10.8.0'

对于节点版本,

console.log('Version: ' + process.version);

【讨论】:

  • 可以直接使用process.platform判断操作系统
  • 这告诉你当前正在使用哪个平台,大概 OP 想知道以前使用的是哪个平台。
猜你喜欢
  • 2014-02-08
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 2017-01-02
  • 2014-08-07
相关资源
最近更新 更多