fs.existsSync 不是 Angular (5) 中的函数

Posted

技术标签:

【中文标题】fs.existsSync 不是 Angular (5) 中的函数【英文标题】:fs.existsSync is not a function in Angular (5) 【发布时间】:2018-02-19 01:57:42 【问题描述】:

我正在尝试通过 Visual Studio Code 运行 Angular 5 应用程序 - 代码编译时没有错误,但在 localhost:4200 上查看时收到“fs.existsSync 不是函数”错误。完整的错误信息是

module.exports< devmode.js:33 <anonymous> devmode.js:31 <anonymous> devmode.js:1 ./node_modules/selenium-webdriver/lib/devmode.js http://localhost:4200/vendor.bundle.js:1084:1
__webpack_require__ http://localhost:4200/inline.bundle.js:55:12 <anonymous> http.js:32 <anonymous> http.js:1 ./node_modules/selenium-webdriver/lib/http.js http://localhost:4200/vendor.bundle.js:1108:1
__webpack_require__ http://localhost:4200/inline.bundle.js:55:12 <anonymous> index.js:29 <anonymous> index.js:1 ./node_modules/selenium-webdriver/http/index.js http://localhost:4200/vendor.bundle.js:1044:1
__webpack_require__ http://localhost:4200/inline.bundle.js:55:12 <anonymous> login.component.ts:1 ./src/app/login/login.component.ts http://localhost:4200/main.bundle.js:284:1
__webpack_require__ http://localhost:4200/inline.bundle.js:55:12 <anonymous> app.module.ts:24 ./src/app/app.module.ts http://localhost:4200/main.bundle.js:107:1
__webpack_require__ http://localhost:4200/inline.bundle.js:55:12 <anonymous> main.ts:4 ./src/main.ts http://localhost:4200/main.bundle.js:403:1
__webpack_require__ http://localhost:4200/inline.bundle.js:55:12 [0] http://localhost:4200/main.bundle.js:411:18
__webpack_require__ http://localhost:4200/inline.bundle.js:55:12 webpackJsonpCallback http://localhost:4200/inline.bundle.js:26:23 <anonymous> http://localhost:4200/main.bundle.js:1:1

与此错误相关的其他问题提到了 Electron,但我没有使用该软件包。

我对这一切都不熟悉,所以不知道我应该提供哪些其他信息。如果有帮助,我的 npm 版本是 5.6.0,node 版本是 6.11.0,我的 package.json 的内容是:

"dependencies": 
    "@angular/animations": "^5.2.0",
    "@angular/common": "^5.2.0",
    "@angular/compiler": "^5.2.0",
    "@angular/core": "^5.2.0",
    "@angular/forms": "^5.2.0",
    "@angular/http": "^5.2.0",
    "@angular/platform-browser": "^5.2.0",
    "@angular/platform-browser-dynamic": "^5.2.0",
    "@angular/router": "^5.2.0",
    "core-js": "^2.4.1",
    "ngx-bootstrap": "^2.0.2",
    "ngx-cookie-service": "^1.0.10",
    "rxjs": "^5.5.6",
    "zone.js": "^0.8.19"
  ,
  "devDependencies": 
    "@angular/cli": "~1.7.0",
    "@angular/compiler-cli": "^5.2.0",
    "@angular/language-service": "^5.2.0",
    "@types/jasmine": "~2.8.3",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "^4.0.1",
    "jasmine-core": "~2.8.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~2.0.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~4.1.0",
    "tslint": "~5.9.1",
    "typescript": "~2.5.3"
  

我需要在我的代码中查找什么来修复此错误?

谢谢

【问题讨论】:

您是如何运行该应用程序的?项目是什么?是 Angular CLI 还是其他?请提供一种复制问题的方法(一个 repo 左右)以及执行此操作所需的所有详细信息。 selenium-webdriver 是 Node 包。它应该由 Node 在 e2e 测试中使用,并且从未包含在 Webpack 浏览器包中。 感谢您的关注。您所做的“selenium-webdriver”引用是关键 - 此应用程序是使用 Angular 4 创建的,并且其中一个导入语句 - import HttpClient from 'selenium-webdriver/http';- 尚未删除。欣赏线索!干杯/汤姆 很高兴它有帮助。 Electron & Angular: fs.existsSync is not a function的可能重复 【参考方案1】:

嗯,这似乎是来自您的编辑器的恶意自动导入。它是从 WebDriver 导入 HttpClient 而不是 Angular。 使用这个:

import  HttpClient  from '@angular/common/http';

【讨论】:

以上是关于fs.existsSync 不是 Angular (5) 中的函数的主要内容,如果未能解决你的问题,请参考以下文章

Browserify / Electron / AngularJS 错误:fs.existsSync 不是函数

TypeError:fs.​​existsSync 不是函数(Electron/ReactJS/Typescript)

fs.exists 和 fs.existsSync 之间的区别

使用 fs.existsSync ...我无法将输出设为 true ...(已编辑)

nodejs_fs模块相关练习1

检查 Gulp 中是不是存在文件