当前位置: 首页 > 知识库问答 >
问题:

适当的哈希邦为Node.js脚本

万博涛
2023-03-14

我试图为node.js创建一个脚本,将在多个环境中工作。特别是对我来说,我在OS X和Ubuntu之间来回切换。在前者中,Node被安装为节点,但在后者中它是nodejs。在我的脚本顶部,我可以有:

#!/usr/bin/env node

或者

#!/usr/bin/env nodejs

只要安装了节点,我宁愿让脚本作为任一环境的可执行文件运行,而不是让一个或另一个必须指定命令(./script-name.jsvs.节点script-name.js)。

是否有任何方法可以为node.js指定备份hashbang或在任何情况下都兼容的备份hashbang?

共有1个答案

潘泰
2023-03-14

如果您的脚本是为节点开发人员使用的,您绝对应该使用

#!/usr/bin/env node

并且不必费心尝试与仅将Node安装为nodejs的人兼容。

理论基础:

  • 这是酷孩子们正在做的,如果你不这样做,你就不酷。像jshint、karma、bow甚至npm这样的主要节点项目只需使用#!/usr/bin/env节点作为其可执行脚本的sheang。
  • 因为酷孩子们正在做这件事,任何在Ubuntu上使用Node的人都设置了一个/usr/bin/节点作为nodejs的符号链接。在堆栈溢出和整个网络上都有关于这样做的高度浏览的说明。甚至还有nodejs-遗留包,它的全部目的是为您创建这个符号链接。使用Node的人知道如何在Ubuntu上解决这个问题,如果他们想使用几乎任何在Node中编写的软件,他们必须这样做。
  • 这个问题似乎在Ubuntu 14.04上不再存在了;我只是清除了Node,运行了一个apt-get安装nodejs,它创建了/usr/bin/nodejs作为的符号链接.我怀疑,受这个问题困扰的人是越来越少的少数。

即使您的目标是节点文盲,您可能仍然想要使用#!/usr/bin/env节点,如果您认为有必要,可能会添加手动符号链接创建或安装nodejs-遗留包到您的安装留档。请注意,如果具有nodejs但不可用的节点的人试图用上面的方法运行您的程序,他们会看到:

/usr/bin/env:node:没有这样的文件或目录

谷歌搜索,这将在第一个结果中给他们修复,并在第一页上多次修复。

如果您真的非常想确保用户可以在一个系统上运行您的软件,其中nodejs可用,但节点不可用(或者节点实际上是业余分组无线电节点程序),那么你可以使用这个从Unix中获取的“双行sheang”

#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"

console.log('Hello world!');

但是当节点世界中几乎没有其他人需要这样做的时候,你真的需要这样做吗?

 类似资料:
  • 问题内容: 我有一个要哈希的字符串。在node.js中生成哈希的最简单方法是什么? 哈希用于版本控制,而非安全性。 问题答案: 看看crypto.createHash(algorithm)

  • 问题内容: 我正在尝试为node.js创建一个可以在多种环境下工作的脚本。特别是对我来说,我正在OS X和Ubuntu之间来回切换。在前者中,Node安装为,而在后者中,安装为。在脚本的顶部,我可以有: 要么 只要安装了node,我宁愿脚本在任一环境中都作为可执行文件运行,而不是让一个或另一个必须指定命令(vs. )。 有什么方法可以指定备份hashbang或与node.js兼容的备份哈希吗? 问

  • 问题内容: 我需要比较大量的数据进行平等的,我需要比较每秒多对, 快速 。保证每个对象的长度相同,有可能而且有可能在未知位置仅存在细微差异。 下面的时间表明,如果在数据的开头附近存在差异,则使用算符的速度非常快,而如果在结尾处存在差异,则使用运算符的速度将显着降低。 在我的用例中,差异可能位于字节的中间或末端(上下文:它是未压缩的图像数据)。我寻找一种使用哈希或校验和加快处理速度的方法。使用md5

  • 我正在为我们的应用程序开发一个缓存策略,它同时使用了Redis和memcached。 我们生成相当长的缓存数据的JSON字符串,这些数据是从我们的SQL数据库中计算出来的。由于缓存的数据是可丢弃的,所以我想使用Memcached,这样它就可以驱逐我们不再需要的键。 问题是可以从不同的参数访问一个集合(比如用户)。在Redis中,我将使用哈希,因此我可以访问该哈希中集合的每个表示形式的键(),并且仍

  • 考虑@data是一个带有日期、类、名称和等级字段的Active记录数组。假设我想以两个哈希结束,一个是每个名称的所有日期的唯一集合;另一个按类、日期和名称细分以显示等级。 > 导致错误: nil:NilClass的未定义方法“[]=”

  • 问题内容: 我有一个实现了hashCode()的向量类。它不是我写的,而是使用2个质数对2个向量分量进行异或运算。这里是: …因为这是来自已建立的Java库,所以我知道它可以正常工作。 然后,我有一个Boundary类,其中包含2个向量:“开始”和“结束”(代表直线的端点)。这两个向量的值是边界的特征。 在这里,我尝试为构成该边界的向量的唯一2元组(起点和终点)创建一个良好的hashCode()。