Linux NodeJS 全局 NPM 包 “:没有这样的文件或目录”

Linux NodeJS global NPM package ":No such file or directory"

本文关键字:文件 NPM 全局 NodeJS Linux      更新时间:2023-09-26

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

sudo apt-get install nodejs npm

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

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

我安装了coffee-script(用于测试目的)和我自己的软件包mangarack,具有:

sudo npm -g install coffee-script mangarack

当我运行coffeecoffee-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 的计算机能够运行此软件包?

完整的源代码参考:

  • NPM: https://www.npmjs.org/package/mangarack
  • git: https://github.com/Deathspike/mangarack.js

问题是文件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

请注意字符'r0d十六进制模式下)之后的node。 您应该将其删除。

解决方案:使用 $ 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