2

尝试通过 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 和纸浆和 node/npm 但它没有改变任何东西。

在另一台计算机上我没有问题。某些东西似乎干扰了我在这个特定系统上的安装。环境变量,现有或不存在的目录,...?

我不熟悉 node.js 也不知道去哪里找。知道有什么问题吗?

编辑:路径中文件的内容

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

#!/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:\Users\me\AppData\Roaming\npm\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.

4

2 回答 2

1

对于遇到相同问题并稍后发现此问题的任何人:我最好的解决方法是运行以下命令:

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

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

我刚刚遇到其他人遇到同样的问题。在他们的情况下,发生的事情pulp.js是不包含在包 tarball 中,不知何故。pulp.js是一个由 Pulp 的 prepublish 脚本生成的文件,所以它应该在同一个目录中index.js——也就是说,你应该pulp.js在以下目录中有一个文件:

$ echo `npm root -g`/pulp/

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

于 2016-01-06T14:43:32.780 回答
0

好的,原来我失踪了bower和/或jshint. 其他人可能已经安装了这些软件包,因为它们很常见。

我通过以下方式大致解决了这个问题:

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

我最好的猜测是某些安装后脚本失败了。不幸的是,我无法再重现该问题。即使在卸载 node.js 之后,删除其中的文件夹%HOME%\AppData\Roaming并从头开始重新安装所有内容:pulp现在也可以使用。

于 2016-01-01T19:49:19.940 回答