如何在Cygwin中添加命令 - npm

12

我在Windows 8.1上使用Cygwin来获得Unix Shell。但是我无法在其中运行像npm这样的命令。

我应该怎么做才能运行它?向Cygwin添加某种环境变量吗?为什么它不使用Windows的PATH?

编辑: 实际上,我认为我误解了问题所在。看起来npm被Cygwin找到了,但不能使用。例如,我可以在Cygwin中使用git而没有任何问题。

$ npm
/cygdrive/d/Logiciels installés/nodejs/npm: line 2: $'\r' : command not found
/cygdrive/d/Logiciels installés/nodejs/npm: line 4: $'\r' : command not found
/cygdrive/d/Logiciels installés/nodejs/npm: line 5: Syntax error around « $'in\r' »
'cygdrive/d/Logiciels installés/nodejs/npm: line 5: `case `uname` in

所以,看起来更像是一个npm问题。


我个人不建议再使用Cygwin。我现在使用Babun,它是一个增强版的Cygwin + Zsh适用于Windows!http://babun.github.io/ - Vadorequest
从错误消息中可以看出,npm(必须是某种 shell 语言中的脚本)包含回车符。您可以使用所选的十六进制编辑器(或 xxd)验证此内容,并使用 dos2unix 删除它们。但是我想知道您是如何安装 npm 的,以至于最终出现了这些奇怪的行结尾。 - user1934428
3个回答

27
这似乎是npm脚本的问题,如https://github.com/joyent/node/issues/5912中所述。
假设您已在默认位置安装了nodejs,您可以运行以下dos2unix命令来修复错误。

dos2unix c:/Program\ Files/nodejs/npm

这解决了我在npm脚本中遇到的问题。

之前不知道有dos2unix这个工具!它帮了我大忙 - 谢谢! - bodecker
1
在Windows上,您可以在此处找到dos2unix.exe和其他一些软件(unix2dos等)http://sourceforge.net/projects/dos2unix/?source=typ_redirect。只需将提取的文件夹放在C:\某个位置,并将路径添加到PATH环境变量中即可。 - Vadorequest
虽然我尝试了,但没有成功。有什么建议吗?非常感谢。 - keinabel
1
在Cygwin中没有'sudo'! - Jerry Miller
此外,在 Linux 上运行良好的程序,在浏览器中只显示“正在加载...”,在 Cygwin 或 DOS 中运行 npm start 时会崩溃!这就是所谓的可移植性的幻象! - Jerry Miller
仅在/cygdrive/c/Share/node_modules_cygwin中存在:@ngtools(即,在Linux中没有此类错误代码!) - Jerry Miller

6

这对我来说很有效,只需安装Windows的node,然后重新启动cygwin shell即可。谢谢! - slashdottir
@Abudayah,你是如何完成第一步的?只是解压缩文件夹吗? - Snow

1
为了使npm脚本即使在dos编码下也能正常运行,我提交了一个补丁

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接