Solvedangular cli ng test fails Module not found: Error: Can't resolve 'fs'

Bug Report or Feature Request (mark with an x)

- [X] bug report -> please search issues before submitting
- [ ] feature request

Versions.

Angular CLI: 1.5.0
Node: 9.0.0
OS: win32 x64
Angular: 5.0.0
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cli: 1.5.0
@angular-devkit/build-optimizer: 0.0.32
@angular-devkit/core: 0.0.20
@angular-devkit/schematics: 0.0.35
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.8.0
@schematics/angular: 0.1.0
typescript: 2.4.2
webpack: 3.8.1

Repro steps.

ng test

Omits the following error:

ERROR in ./node_modules/fs.realpath/index.js
Module not found: Error: Can't resolve 'fs' in XXXX\node_modules\fs.realpath'
@ ./node_modules/fs.realpath/index.js 8:9-22
@ ./node_modules/jasmine/node_modules/glob/sync.js
@ ./node_modules/jasmine/node_modules/glob/glob.js
@ ./node_modules/jasmine/lib/jasmine.js
@ ./src/client/app/account/login/login.component.spec.ts
@ ./src/client .spec.ts$
@ ./src/client/test.ts

ERROR in ./node_modules/fs.realpath/old.js
Module not found: Error: Can't resolve 'fs' in 'XXXX\node_modules\fs.realpath'
@ ./node_modules/fs.realpath/old.js 24:9-22
@ ./node_modules/fs.realpath/index.js
@ ./node_modules/jasmine/node_modules/glob/sync.js
@ ./node_modules/jasmine/node_modules/glob/glob.js
@ ./node_modules/jasmine/lib/jasmine.js
@ ./src/client/app/account/login/login.component.spec.ts
@ ./src/client .spec.ts$
@ ./src/client/test.ts

ERROR in ./node_modules/jasmine/node_modules/glob/sync.js
Module not found: Error: Can't resolve 'fs' in 'XXXX\node_modules\jasmine\node_modules\glob'
@ ./node_modules/jasmine/node_modules/glob/sync.js 4:9-22
@ ./node_modules/jasmine/node_modules/glob/glob.js
@ ./node_modules/jasmine/lib/jasmine.js
@ ./src/client/app/account/login/login.component.spec.ts
@ ./src/client .spec.ts$
@ ./src/client/test.ts

ERROR in ./node_modules/jasmine/node_modules/glob/glob.js
Module not found: Error: Can't resolve 'fs' inXXXX\node_modules\jasmine\node_modules\glob'
@ ./node_modules/jasmine/node_modules/glob/glob.js 43:9-22
@ ./node_modules/jasmine/lib/jasmine.js
@ ./src/client/app/account/login/login.component.spec.ts
@ ./src/client .spec.ts$
@ ./src/client/test.ts

ERROR in ./node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core.js
Module not found: Error: Can't resolve 'fs' in 'XXXX\node_modules\jasmine\node_modules\jasmine-core\lib'
@ ./node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core.js 5:9-22
@ ./node_modules/jasmine/lib/jasmine.js
@ ./src/client/app/account/login/login.component.spec.ts
@ ./src/client .spec.ts$
@ ./src/client/test.ts

Desired functionality.

Run the tests

Mention any other details that might be useful.

It happened when I upgraded from cli 1.47 to 1.5.0.

Jasmine packages:
"jasmine": "^2.8.0",
"jasmine-core": "~2.5.2",
"jasmine-spec-reporter": "~3.2.0"

Karma packages:

"karma": "~1.5.0",
"karma-chrome-launcher": "~2.0.0",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^1.0.0",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"karma-junit-reporter": "^1.2.0",
"karma-mocha": "^1.3.0",
"karma-phantomjs-launcher": "^1.0.4",

33 Answers

✔️Accepted Answer

What worked for me is adding the following to karma.conf.js

webpack: { node: { fs: 'empty', } }

Hope it helps someone.

Other Answers:

I had a "import 'jasmine'" in one of my tests. Removing it solved the problem.

I had the same error after running ng test that went away after removing import 'jasmine'; from *.spec.ts files.

If the editor is complaining about missing types for jasmine functions, you can fix that by editing tsconfig.spec.json file:

{
  "compilerOptions": {
    "types": [
      "jasmine",
      ...
    ]
  },
 ...
}

Hi All,
I had the same error.
The error was that I imported the wrong HttpClient (import { HttpClient } from 'selenium-webdriver/http';) module into the component.

I have suddenly started getting the same issue today after removing lock files, with CLI 1.6.6. The only thing that helped me is the trick with "karma.conf.js" mentioned above:

webpack: { node: { fs: 'empty', } }

More Issues: