无论我在什么目录下,无论我在cmd.exe中键入“npm”后,我都被这个错误卡住了。下面是npm-debug.log:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js' ]
2 info using npm@2.14.12
3 info using node@v4.2.6
4 verbose stack Error: EISDIR: illegal operation on a directory, read
4 verbose stack     at Error (native)
5 verbose cwd C:\Users\me
6 error Windows_NT 6.1.7601
7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js"
8 error node v4.2.6
9 error npm  v2.14.12
10 error code EISDIR
11 error errno -4068
12 error syscall read
13 error eisdir EISDIR: illegal operation on a directory, read
13 error eisdir This is most likely not a problem with npm itself
13 error eisdir and is related to npm not being able to find a package.json in
13 error eisdir a package you are trying to install.
14 verbose exit [ -4068, true ]

I have tried and uninstalling/reinstalling nodejs multiple times, I even deleted npm and npm-cache folders in C:\Users\me\AppData\Roaming. I'm not sure what went wrong to cause this. One second it was working fine, and now I can't get rid of this error. The explanation in the log does not make sense, as it gives this error in any directory. I should note that running a command prompt as administrator does not give this error. I'm pulling my hair out this Friday evening trying to get this fixed, any help would be greatly appreciated!


当前回答

在我的情况下,我得到了“EISDIR:非法操作的目录,读取”,因为在我的.angular-cli。我没有在“脚本”中提供完整的路径:

例如,我有

"scripts": [
        "../node_modules/hammerjs",
        "../node_modules/moment"
      ],

事实上,它本该如此

"scripts": [
        "../node_modules/hammerjs/hammer.min.js",
        "../node_modules/moment/min/moment.min.js"
      ],

其他回答

对于mac os: 如果直接从nodejs网站安装,npmrc文件将位于/usr/local/etc/npmrc只要删除未定义的配置,这个问题就会得到解决。

EISDIR代表“错误,是目录”。这意味着NPM试图对一个文件做一些事情,但它是一个目录。在你的例子中,NPM试图“读取”一个目录文件(行:4)。由于操作不能完成,错误被抛出。

这里有三件事要确定。

确保文件存在。如果没有,则需要创建它。(如果NPM依赖于文件中的任何特定信息,你将需要在那里有这些信息)。 确保它实际上是一个文件,而不是一个目录。 它具有正确的权限。可以使用“sudo chmod 777 FILE_NAME”将文件修改为拥有所有权限。(注意:你给了读,写和执行权限的文件上的每个人)

在我的情况下,我的错误是假设,脚本允许与目录一起工作,但它等待FILE PATH,所以尝试设置文件的完整路径。

我的情况是:

['/var/task/myFolder']

但正确的道路应该是:

['/var/task/myFolder/sample.tgs']

与无服务器上木偶机内部铬使用相关的项目是lambda。希望,它有帮助。

对我来说,这是因为我走错了路;它应该是一个文件的路径,但我错误地使用了一个目录的路径:

改变:

path.resolve(__dirname, '../');

到这个:

path.resolve(__dirname, '../.env')

今天我把npm从6.4.1版本升级到6.5.0版本后,也遇到了同样的问题。我通过从node.js下载.pkg安装程序(推荐大多数用户)并在之后运行它来解决这个问题。