错误:找不到模块'./pulp'

试图通过node.js 5.3.0在Windows 7上安装PureScript和纸浆:

npm install -g purescript npm install -g pulp cd some-empty-dir pulp init 

安装似乎正常工作,但pulp总是失败的错误:

 module.js:328 throw err; ^ Error: Cannot find module './pulp' at Function.Module._resolveFilename (module.js:326:15) at Function.Module._load (module.js:277:25) at Module.require (module.js:354:17) at require (internal/module.js:12:17) at Object.<anonymous> (C:\Users\me\AppData\Roaming\npm\node_modules\pulp\index.js:2:1) at Module._compile (module.js:398:26) at Object.Module._extensions..js (module.js:405:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Function.Module.runMain (module.js:430:10) 

index.js只包含这两行:

 #!/usr/bin/env node require("./pulp"); 

C:\Users\me\AppData\Roaming\npm是我PATH的最后一部分。

where pulp返回

 C:\Users\me\AppData\Roaming\npm\pulp C:\Users\me\AppData\Roaming\npm\pulp.cmd 

我尝试了与Git Bash相同的结果。 我尝试重新安装purescript和纸浆和节点/ NPM,但没有任何改变。

在另一台电脑上,我没有任何问题。 有些东西似乎干扰了我在这个特定系统上的安装。 环境variables,现有或不存在的目录,…?

我不熟悉node.js,不知道在哪里看。 任何想法有什么不对?

编辑:path中文件的内容

C:\用户\我\应用程序数据\漫游\故宫\浆:

 #!/bin/sh basedir=`dirname "$0"` case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac if [ -x "$basedir/node" ]; then "$basedir/node" "$basedir/node_modules/pulp/index.js" "$@" ret=$? else node "$basedir/node_modules/pulp/index.js" "$@" ret=$? fi exit $ret 

C:\用户\我\应用程序数据\漫游\故宫\ pulp.cmd:

 @IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\node_modules\pulp\index.js" %* ) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\node_modules\pulp\index.js" %* ) 

只是运行命令pulp执行pulp.cmd的“else”分支。

对于有同样问题的人,稍后会发现:我最好的解决办法是运行以下命令:

 npm uninstall -g pulp npm cache clean pulp npm install -g pulp 

为什么我认为这将解决它:

我刚遇到有这个问题的其他人。 在他们的情况下,发生了什么事情,不知怎的, pulp.js没有包含在软件包tarball中。 pulp.js是Pulp的预发布脚本生成的一个文件,所以它应该和index.js在同一个目录中 – 也就是说,你应该在下面的目录中有一个文件pulp.js

 $ echo `npm root -g`/pulp/ 

删除纸浆的caching版本并再次下载(即上述命令)解决了这个问题。

好的,事实certificate,我错过了bower和/或jshint 。 大家可能已经安装了这些软件包,因为它们很常见。

我大致解决了这个问题:

 npm uninstall -g pulp npm install -g bower npm install -g jshint npm install -g pulp 

我最好的猜测是一些后安装脚本失败。 不幸的是,我再也不能重现这个问题了。 即使在卸载node.js之后,删除%HOME%\AppData\Roaming的文件夹并从头开始重新安装所有内容: pulp现在就起作用了。