#!/usr/bin/env node 到底是什么?

栏目: 服务器 · 发布时间: 6年前

内容简介:上一篇文章中给大家介绍了开发npm包的过程,这篇文章来分享一下我在开发npm包中遇到的问题。第一个问题就是在开发npm包的时候,再将包link到你的项目之后,运行包发现报错了。。这句话有什么作用呢?介绍它之前需要先介绍一个知识点。

上一篇文章中给大家介绍了开发npm包的过程,这篇文章来分享一下我在开发npm包中遇到的问题。第一个问题就是 #!/usr/bin/env node 到底是什么?(如果我的理解有错误,欢迎各位大神指点)

在开发npm包的时候,再将包link到你的项目之后,运行包发现报错了。

#!/usr/bin/env node 到底是什么?
去Google查找了一下,发现解决方法是需要在你的bin文件的上面增加一行 #!/usr/bin/env node

。这句话有什么作用呢?介绍它之前需要先介绍一个知识点。

Shebang

若是有使用过 Linux 或者Unix的前端开发者,对于Shebang应该不陌生,它是一个符号的名称, #! 。这个符号通常在Unix系统的基本中第一行开头中出现,用于指明这个脚本文件的解释程序。了解了Shebang之后就可以理解,增加这一行是为了指定用node执行脚本文件。

当你输入一个命令的时候,npm是如何识别并执行对应的文件的呢?具体的原理阮一峰大神已经在npm scripts 使用指南中介绍过。简单的理解,就是输入命令后,会有在一个新建的 shell 中执行指定的脚本,在执行这个脚本的时候,我们需要来指定这个脚本的解释程序是node。

在一些情况下,即使你增加了这一行,但还是可能会碰到一下错误,这是为什么呢?

No such file or directory
复制代码

为了解决这个问题,首先需要了解一下 /usr/bin/env 。我们已经知道,Shebang是为了指定脚本的解释程序,可是不同用户或者不同的脚本解释器有可能安装在不同的目录下,系统如何知道要去哪里找你的解释程序呢? /usr/bin/env 就是告诉系统可以在PATH目录中查找。 所以配置 #!/usr/bin/env node , 就是解决了不同的用户node路径不同的问题,可以让系统动态的去查找node来执行你的脚本文件。

看到这里你应该理解,为什么会出现 No such file or directory 的错误?因为你的node安装路径没有添加到系统的PATH中。所以去进行node环境变量配置就可以了。

要是你只是想简单的测试一下,那么你可以通过 which node 命令来找到你本地的node安装路径,将 /usr/bin/env 改为你查找到的node路径即可。

最后需要说明的一点是,windows不支持Shebang,它是通过文件的扩展名来确定使用什么解释器来执行脚本。


以上所述就是小编给大家介绍的《#!/usr/bin/env node 到底是什么?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

活着就为改变世界

活着就为改变世界

[美] 杰弗里·扬、威廉·西蒙 / 蒋永军 / 中信出版社 / 2010-6 / 39.00元

内容简介 苹果公司CEO史蒂夫•乔布斯这个一直活在自己想象的世界里的创业奇才,经历过各种挫折与失落,但他那无所畏惧、敢于承担的个性让他一直努力实践着自己的价值观,总能为他的离奇想法找到解决问题的办法。 本书两位作者通过深入访谈和资料调查,揭秘了许多乔布斯个人的创业经历和家庭变故,为大家塑造了一个活生生的“乔布斯式”的鲜活人物,描述了一个个充满传奇色彩的商业奇迹,真实地再现了乔布斯几十年......一起来看看 《活着就为改变世界》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器