什么可能导致与 npm 无法找到文件相关的错误?我的 node_modules 子文件夹中没有内容。这是为什么?

Posted

技术标签:

【中文标题】什么可能导致与 npm 无法找到文件相关的错误?我的 node_modules 子文件夹中没有内容。这是为什么?【英文标题】:What could cause an error related to npm not being able to find a file? No contents in my node_modules subfolder. Why is that? 【发布时间】:2018-08-31 03:23:14 【问题描述】:

我正在尝试在从 ASP.NET Boilerplate 获得的 angular 项目文件夹中运行 npm install,但我收到一个错误,即“与 npm 无法找到文件有关”。

D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular>npm install
npm WARN deprecated @types/moment@2.13.0: This is a stub types definition for Moment (https://github.com/moment/moment). Moment provides its own type definitions, so you don't need @types/moment installed!
npm WARN codelyzer@3.2.2 requires a peer of @angular/compiler@^2.3.1 || >=4.0.0-beta <5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN codelyzer@3.2.2 requires a peer of @angular/core@^2.3.1 || >=4.0.0-beta <5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules\fsevents):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Error: EPERM: operation not permitted, rename 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\.staging\fsevents-8cc0601e\node_modules\are-we-there-yet' -> 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\.staging\are-we-there-yet-cedb4a6a'

npm ERR! path D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\@angular-devkit\build-optimizer\node_modules\typescript
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\@angular-devkit\build-optimizer\node_modules\typescript' -> 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\@angular-devkit\build-optimizer\node_modules\.typescript.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Jack\AppData\Roaming\npm-cache\_logs\2018-03-21T19_33_18_250Z-debug.log

我可以清楚地看到这种情况正在发生,因为我的 node_modules 子文件夹仅包含一个文件夹结构,其中没有文件。该结构是:

node_modules\@angular-devkit\build-optimizer\node_modules

我安装了 node 8.9.4、npm 5.6.0 和 angular-CLI 1.5.0 以及 typescript 2.0.0。后两个包已全局安装。

这里是package.json 文件内容:


    "name": "MyProject",
    "version": "0.0.0",
    "license": "MIT",
    "angular-cli": ,
    "scripts": 
        "ng": "ng",
        "start": "ng serve --host 0.0.0.0 --port 4200",
        "hmr": "ng serve --host 0.0.0.0 --port 4200 4201 --hmr -e=hmr",
        "test": "ng test",
        "pree2e": "webdriver-manager update --standalone false --gecko false",
        "e2e": "protractor"
    ,
    "private": true,
    "dependencies": 
        "@angular/animations": "^5.0.3",
        "@angular/common": "^5.0.3",
        "@angular/compiler": "^5.0.3",
        "@angular/core": "^5.0.3",
        "@angular/forms": "^5.0.3",
        "@angular/http": "^5.0.3",
        "@angular/platform-browser": "^5.0.3",
        "@angular/platform-browser-dynamic": "^5.0.3",
        "@angular/router": "^5.0.3",
        "@aspnet/signalr": "1.0.0-preview1-28189",
        "@types/bootstrap": "^3.3.33",
        "@types/jquery": "^3.2.12",
        "@types/jquery.blockui": "0.0.28",
        "@types/jquery.validation": "^1.16.3",
        "@types/lodash": "^4.14.62",
        "@types/moment": "^2.13.0",
        "@types/moment-timezone": "^0.2.34",
        "@types/signalr": "^2.2.33",
        "@types/toastr": "^2.1.33",
        "abp-ng2-module": "^1.3.0",
        "abp-web-resources": "^3.3.0",
        "animate.css": "^3.5.2",
        "block-ui": "^2.70.1",
        "bootstrap": "^3.3.7",
        "bootstrap-select": "^1.12.2",
        "chart.js": "^2.6.0",
        "core-js": "^2.4.1",
        "famfamfam-flags": "^1.0.0",
        "flot": "^0.8.0-alpha",
        "font-awesome": "^4.7.0",
        "jquery": "^3.1.1",
        "jquery-countto": "^1.2.0",
        "jquery-migrate": "^3.0.0",
        "jquery-slimscroll": "^1.3.8",
        "jquery-sparkline": "^2.4.0",
        "js-cookie": "^2.1.4",
        "lodash": "^4.17.4",
        "moment": "^2.18.1",
        "moment-timezone": "^0.5.13",
        "morris.js": "^0.5.0",
        "ngx-bootstrap": "^2.0.2",
        "ngx-pagination": "^3.0.3",
        "node-waves": "^0.7.5",
        "push.js": "1.0.4",
        "raphael": "^2.2.7",
        "rxjs": "^5.5.2",
        "signalr": "^2.2.1",
        "simple-line-icons": "^2.4.1",
        "spin.js": "^2.3.2",
        "sweetalert": "^2.0.8",
        "toastr": "^2.1.2",
        "ts-helpers": "^1.1.2",
        "web-animations-js": "^2.3.1",
        "zone.js": "0.8.18"
    ,
    "devDependencies": 
        "@angular/cli": "^1.5.4",
        "@angular/compiler-cli": "^5.0.3",
        "@angularclass/hmr": "^2.1.3",
        "@types/jasmine": "^2.5.38",
        "@types/node": "^8.0.27",
        "codelyzer": "^3.1.2",
        "jasmine-core": "^2.5.2",
        "jasmine-spec-reporter": "^4.2.1",
        "karma": "^1.4.1",
        "karma-chrome-launcher": "^2.0.0",
        "karma-cli": "^1.0.1",
        "karma-coverage-istanbul-reporter": "^1.3.0",
        "karma-jasmine": "^1.1.0",
        "karma-jasmine-html-reporter": "^0.2.2",
        "nswag": "^11.12.7",
        "protractor": "^5.1.1",
        "ts-node": "^3.3.0",
        "tslint": "^5.7.0",
        "typescript": "2.4.2"
    

当我运行npm install 时,我可以看到包正在下载到.staging 文件夹中。在运行finalize 命令时(请参阅下面的日志),我可以看到包文件夹正在合并并复制到某处,但该位置似乎不是我的node_modules 子文件夹,而不是第一组我上面显示的子文件夹。当npm install 完成时,.staging 文件夹被删除,我只剩下部分文件夹结构。

诚然,我是 Node 开发的新手——我通常在我们的 ASP.NET Web API 后端工作。我试图让我的开发环境与我们的前端开发人员的开发环境同步。我花了一天的大部分时间寻找解决方案。我已经尝试卸载并重新安装 Node.js。我尝试了与我们前端开发人员环境相匹配的不同版本。我已经尝试使用最新版本的 angular-CLI 和 typescript 并回退到我上面引用的版本,希望能够解决“需要对等”警告。我在这个网站上搜索过类似的答案。 The closest one I have found 仍未得到答复。

这里是 npm 错误输出中引用的“完整日志”的结尾:

19577 silly saveTree | `-- tsutils@2.22.2
19577 silly saveTree +-- typescript@2.4.2
19577 silly saveTree +-- web-animations-js@2.3.1
19577 silly saveTree `-- zone.js@0.8.18
19578 warn codelyzer@3.2.2 requires a peer of @angular/compiler@^2.3.1 || >=4.0.0-beta <5.0.0 but none is installed. You must install peer dependencies yourself.
19579 warn codelyzer@3.2.2 requires a peer of @angular/core@^2.3.1 || >=4.0.0-beta <5.0.0 but none is installed. You must install peer dependencies yourself.
19580 warn optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules\fsevents):
19581 warn optional SKIPPING OPTIONAL DEPENDENCY: Error: EPERM: operation not permitted, rename 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\.staging\fsevents-8cc0601e\node_modules\are-we-there-yet' -> 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\.staging\are-we-there-yet-cedb4a6a'
19582 verbose optional SKIPPING OPTIONAL DEPENDENCY:
19582 verbose optional Please try running this command again as root/Administrator.
19583 verbose stack Error: ENOENT: no such file or directory, rename 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\@angular-devkit\build-optimizer\node_modules\typescript' -> 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\@angular-devkit\build-optimizer\node_modules\.typescript.DELETE'
19584 verbose cwd D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular
19585 verbose Windows_NT 10.0.16299
19586 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
19587 verbose node v8.9.4
19588 verbose npm  v5.6.0
19589 error path D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\@angular-devkit\build-optimizer\node_modules\typescript
19590 error code ENOENT
19591 error errno -4058
19592 error syscall rename
19593 error enoent ENOENT: no such file or directory, rename 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\@angular-devkit\build-optimizer\node_modules\typescript' -> 'D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular\node_modules\@angular-devkit\build-optimizer\node_modules\.typescript.DELETE'
19594 error enoent This is related to npm not being able to find a file.
19595 verbose exit [ -4058, true ]

请指教。

【问题讨论】:

手动删除 node_modules 文件夹,然后安装最新的 node.js,然后从 Angular 文件夹运行 yarn。它会解决你的问题 谢谢@viveknuna。一旦我升级了 node.js、npm、angular-cli 和 typescript,然后安装了 yarn。我能够成功运行yarn,然后我能够成功运行npm start。那究竟做了什么?那就是——我应该从你的建议中学到什么? @viveknuna,我想知道为什么 yarn 命令有效,而 npm install 命令无效。有什么见解可以和我分享吗? 更新了我的答案,请查收。 【参考方案1】:

我也遇到过同样的问题。谷歌搜索后,我找到了这个解决方案:

'git' is not recognized as an internal or external command

看看这个希望你的问题会得到解决

【讨论】:

【参考方案2】:

将您的 firebase.json 更改为:


  "functions": 
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ]
  

收件人:


  "functions": 
  

【讨论】:

【参考方案3】:

就我而言

npm cache clean --force

也不行,我用

纱线

首先,全局安装yarn

npm i -g yarn

然后我会代替“npm start”,

yarn add

这对我有用。

【讨论】:

【参考方案4】:

就我而言,我必须创建一个新应用程序,重新安装我的节点包,然后复制我的 src 文档。那行得通。

【讨论】:

【参考方案5】:

如果发生这种情况,则意味着您必须升级 node.js。只需从您的 pc 或 mac 卸载您当前的节点,然后从 https://nodejs.org/en/ 下载最新版本

【讨论】:

【参考方案6】:

在我的情况下,我尝试运行 npm i firebase@7.8.2 并收到错误,因为开发服务器正在 vsc 上的另一个终端中运行。点击 ctrl+c, y 以在该终端中停止它,然后安装工作。

【讨论】:

【参考方案7】:

在我的例子中,这个错误发生在一个新项目中。

这里提出的解决方案都不起作用,所以我只是重新安装了所有软件包并开始正常工作。

【讨论】:

【参考方案8】:

以下步骤对我有用:

    npm cache clean -f rm -rf node_modules npm i

【讨论】:

【参考方案9】:

尝试以下步骤: 1. 确保您拥有最新的 npm (npm install -g npm)。 2. 为您的防病毒软件添加一个例外,以忽略项目中的 node_modules 文件夹。 3. $ rm -rf node_modules package-lock.json . 4. $ npm 安装

【讨论】:

【参考方案10】:

这可能与 Angular 包损坏或包不兼容有关。

请按照以下步骤解决问题。

手动删除 node_modules 文件夹。 安装节点 (https://nodejs.org/en/download)。 安装 Yarn (https://yarnpkg.com/en/docs/install)。 打开命令提示符,进入路径 angular 文件夹并运行 Yarn。 运行 angular\nswag\refresh.bat。 从 angular 文件夹运行 npm start。

更新

ASP.NET Boilerplate 建议 here 使用 yarn,因为 npm 存在一些问题。它很慢并且无法始终如一地解决依赖关系,yarn 解决了这些问题并且它也与 npm 兼容。

【讨论】:

虽然我使用下面的答案中详述的程序来实际解决我的问题,@viveknuna 提供了我需要让项目正常工作的建议,所以我接受他的回答“因为它解决了 [我的] 问题[并且] 对找到 [我的] 解决方案最有帮助”。 @jlavallet 这就是为什么我赞成你的答案,伙计:) 快乐编码。 所以解决方法是切换到yarn ;P【参考方案11】:

按照@viveknuna 的建议,我使用下载的安装程序升级到了最新版本的 node.js 和 npm。我还使用下载的安装程序安装了最新版本的 yarn。然后,如下所示,我升级了 angular-cli 和 typescript。下面是这个过程的样子:

D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular>npm install -g @angular/cli@latest
C:\Users\Jack\AppData\Roaming\npm\ng -> C:\Users\Jack\AppData\Roaming\npm\node_modules\@angular\cli\bin\ng
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules\@angular\cli\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted "os":"darwin","arch":"any" (current: "os":"win32","arch":"x64")

+ @angular/cli@1.7.3
added 75 packages, removed 166 packages, updated 61 packages and moved 24 packages in 29.084s

D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular>npm install -g typescript
C:\Users\Jack\AppData\Roaming\npm\tsserver -> C:\Users\Jack\AppData\Roaming\npm\node_modules\typescript\bin\tsserver
C:\Users\Jack\AppData\Roaming\npm\tsc -> C:\Users\Jack\AppData\Roaming\npm\node_modules\typescript\bin\tsc
+ typescript@2.7.2
updated 1 package in 2.427s

D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular>node -v
v8.10.0

D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular>npm -v
5.6.0

D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular>yarn --version
1.5.1

此后,我在 Angular 文件夹中运行了 yarnnpm start,一切似乎都很好。看起来是这样的:

D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular>yarn
yarn install v1.5.1
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@1.1.3: The platform "win32" is incompatible with this module.
info "fsevents@1.1.3" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "@angular/cli > @schematics/angular@0.1.10" has incorrect peer dependency "@angular-devkit/schematics@0.0.40".
warning "@angular/cli > @angular-devkit/schematics > @schematics/schematics@0.0.10" has incorrect peer dependency "@angular-devkit/schematics@0.0.40".
warning " > codelyzer@3.2.2" has incorrect peer dependency "@angular/compiler@^2.3.1 || >=4.0.0-beta <5.0.0".
warning " > codelyzer@3.2.2" has incorrect peer dependency "@angular/core@^2.3.1 || >=4.0.0-beta <5.0.0".
[4/4] Building fresh packages...
Done in 232.79s.

D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular>npm start

> MyProject@0.0.0 start D:\Dev\AspNetBoilerplate\MyProject\3.5.0\angular
> ng serve --host 0.0.0.0 --port 4200

** NG Live Development Server is listening on 0.0.0.0:4200, open your browser on http://localhost:4200/ **
Date: 2018-03-22T13:17:28.935Z
Hash: 8f226b6fa069b7c201ea
Time: 22494ms
chunk account.module account.module.chunk.js () 129 kB  [rendered]
chunk app.module app.module.chunk.js () 497 kB  [rendered]
chunk common common.chunk.js (common) 1.46 MB  [rendered]
chunk inline inline.bundle.js (inline) 5.79 kB [entry] [rendered]
chunk main main.bundle.js (main) 515 kB [initial] [rendered]
chunk polyfills polyfills.bundle.js (polyfills) 1.1 MB [initial] [rendered]
chunk styles styles.bundle.js (styles) 1.53 MB [initial] [rendered]
chunk vendor vendor.bundle.js (vendor) 15.1 MB [initial] [rendered]

webpack: Compiled successfully.

【讨论】:

好,它会帮助别人:)【参考方案12】:

我今天遇到了同样的问题,这让我发疯了!!!我所做的是升级到节点 8.10 并将我的 NPM 升级到我卸载了 angular CLI 的最新版本

npm uninstall -g angular-cli
npm uninstall --save-dev angular-cli

然后我从 NPM 验证了我的缓存,如果它不是最新的,我清理它并再次运行安装 如果 npm 版本 npm cache clean --force

npm install -g @angular/cli@latest

并创建了一个新的项目文件并创建了一个新的 Angular 项目。

【讨论】:

不幸的是,这个解决方案似乎没有解决我的问题。我跟着它创建了一个新的项目文件和一个新的角度项目。也许这是关键,但在运行 npm uninstall --save-dev angular-cli 命令期间,它似乎在做与以前完全相同的事情。这让我感到惊讶,因为我认为我所做的只是卸载 angular-cli。正如我在帖子中所说的那样——我是 Node.js 开发的新手,所以我可能错过了一些基本的东西。另外,正如我在帖子中所说的那样——我尝试使用最新版本的所有内容运行npm install,但没有成功。

以上是关于什么可能导致与 npm 无法找到文件相关的错误?我的 node_modules 子文件夹中没有内容。这是为什么?的主要内容,如果未能解决你的问题,请参考以下文章

npm install mongoose 导致 gyp 和 kerberos 错误(未找到 gssapi/gssapi.h 文件)

什么会导致npm live-server停止检测文件更改?

Angular 构建 - 未找到模块:错误:无法解析“控制台”

电脑经常自己弹出shell32.dll这个文件,让选择它的打开方式。

npm

au为啥加载音频错误