无论我在什么目录下,无论我在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!


当前回答

我使用的是Laravel v8.56.0的Mix v6.0.29

在webpack.mix.js中,当复制目录时使用

mix.copyDirectory(“resources/js”, “public/js”);

检查内部文件夹,它不应该包含点/s(.),否则,这个错误将弹出。

我认为对于这个特定的版本,路径(或文件夹)与点/s后面跟着一些字符,将类似于文件扩展名,然后将被视为“文件”,不管它是否是“文件夹”。

其他回答

我有吞咽的问题。问题是gulp添加了一个依赖到我的源文件,我认为npm试图打开它:

{
  "name": "name",
  "version": "2.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "appname": "file://gulp",
    "gulp-concat": "^2.6.1",
    "gulp-electron": "^0.1.3",
    "gulp-shell": "^0.5.2",
    "gulp-uglify": "^2.0.0",
    "gulp-util": "^3.0.7",
    "node-7z": "^0.4.0"
  }
}

确保你的包中没有奇怪的引用。json文件。

确保node_modules(和你的根package.json)不包含对npm的“package”的引用。json”模块。删除包。node_modules的json文件夹为我解决了这个问题。

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

例如,我有

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

事实上,它本该如此

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

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

在我的情况下,我忘记传递它所要求的一个文件的完整路径。在传递文件的完整路径后工作:)