mac中报env: node : No such file or directory此错误的根本原因

此蛋疼的问题很多人碰到,但是并没有从根本上解决问题,建议转发给更多的人,让更多的苦逼程序员知道。

问题场景

当你用mac安装了某个npm包,例如:npm install jdcfe-smock -g后,控制台告诉你已经安装完成。但是你想来用该包的时候,例如:smock -v,却发现总给你报这个错:

1
env: node\r: No such file or directory

一般你在网络上能找到的方案可能以下几种:

1
2
3
1. uninstall and reinstall Node.js
2. execute this command to create a link for node : sudo ln -s /usr/bin/nodejs /usr/local/bin/node
3. set my path with this command : export PATH=$PATH:/usr/local/bin/node

运气好的情况下,上面几种方案可以解决问题,运气不好的情况下,好几天你都搞不定。实际上引起此问题的根本原因在,创建npm包的时候,入口文件里加入了如下代码,并且该入口文件是在windows操作系统中创建的,所以会导致此问题。你可以联系该npm包的发布者,告诉他,让他在mac中创建此文件,然后发布一遍。此问题便能解决所有mac使用该包的报错问题。你自己的电脑只需要重新更新一下该作者新发布的包,就无需按照网络中的各种方案去尝试了。也不用靠运气去解决该问题了。

1
#!/usr/bin/env node

当你联系npm包发布者时,发布者也有可能回复没有mac,那这种情况就只有呵呵了……
所以作为npm包的发布者,如果你看到了此文章,你需要注意自己的入口文件是否是在mac中创建的,不然你可能坑了很多mac用户。