javascript - Linux NodeJS 全局 NPM 包 ":No such file or directory"

标签 javascript linux node.js npm

我正在使用 Ubuntu 14.04 并安装了 nodejsnpm:

sudo apt-get install nodejs npm

然后我创建了一个符号链接(symbolic link),使包能够使用 node 解释器(而不是 nodejs):

sudo ln -s /usr/bin/nodejs /usr/local/bin/node

我安装了 coffee-script(用于测试目的)和我自己的包 mangarack,其中:

sudo npm -g install coffee-script mangarack

当我运行 coffee(coffee-script 的一部分)时,该包将运行良好。如果我运行 mangarack,我将得到:

: No such file or directory.

我的 package.json 中有以下内容:

"bin": {
  "mangarack": "./bin/mangarack"
},

该文件包含:

#!/usr/bin/env node

require('../lib/cli/index');

我查看了 coffee-script 是如何做到的,我的 require 语句似乎是完全错误的,所以我用 console.log< 替换了它 语句来查看文件是否会在 node 中实际运行。它没有。为了使基于 Linux 的机器能够运行此程序包,我遗漏或遗漏了什么配置?

完整的源代码引用:

最佳答案

问题是文件bin/mangarack使用了回车,导致linux环境出错。看看我得到了什么:

$ mangarack --help
env: node\r: No such file or directory

$ head -n 1 `which mangarack` | hexdump
0000000 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 6e
0000010 6f 64 65 0d 0a
0000015

注意 node 之后的字符 \r(十六进制模式下的 0d)。你应该删除它。

解决方案:使用 $ git config core.autocrlf 设置项目,然后提交更改。见https://help.github.com/articles/dealing-with-line-endings/

修复后的预期结果应该是:

$ head -n 1 `which mangarack` | hexdump
0000000 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 6e
0000010 6f 64 65 0a
0000015

关于javascript - Linux NodeJS 全局 NPM 包 ":No such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331758/

相关文章:

c++ - 有很多读者时使用 pthread_rwlock 的效率

linux - 兼容 erlang 和 rabbitmq rpm

node.js - 如何在调用socket.emit之前从socket.on获取响应

javascript - 基于名称属性的对象数组排序错误

javascript - jquery工具覆盖,如何在切换覆盖时保留蒙版

Javascript 将数组转换为以数组属性为键的映射,并将相应的重复键值存储为数组

javascript - XMLHttpRequest 读取渐进式数据不起作用?

Javascript event.target.value 在 Firefox 中返回的值与在 Chrome/IE 中返回的值不同

linux - 检测以太网端口是否被拔掉

node.js - MongoDB 聚合在日期字段分组后添加两个日期之间缺少的月份