我试图为node.js创建一个脚本,将在多个环境中工作。特别是对我来说,我在OS X和Ubuntu之间来回切换。在前者中,Node被安装为节点
,但在后者中它是nodejs
。在我的脚本顶部,我可以有:
#!/usr/bin/env node
或者
#!/usr/bin/env nodejs
只要安装了节点,我宁愿让脚本作为任一环境的可执行文件运行,而不是让一个或另一个必须指定命令(./script-name.js
vs.节点script-name.js
)。
是否有任何方法可以为node.js指定备份hashbang或在任何情况下都兼容的备份hashbang?
如果您的脚本是为节点开发人员使用的,您绝对应该使用
#!/usr/bin/env node
并且不必费心尝试与仅将Node安装为nodejs
的人兼容。
理论基础:
#!/usr/bin/env节点
作为其可执行脚本的sheang。 /usr/bin/节点
作为nodejs
的符号链接。在堆栈溢出和整个网络上都有关于这样做的高度浏览的说明。甚至还有nodejs-遗留
包,它的全部目的是为您创建这个符号链接。使用Node的人知道如何在Ubuntu上解决这个问题,如果他们想使用几乎任何在Node中编写的软件,他们必须这样做。 /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()。