Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: Cannot read property 'code' of null #674

Closed
artemave opened this issue Apr 27, 2019 · 11 comments
Closed

TypeError: Cannot read property 'code' of null #674

artemave opened this issue Apr 27, 2019 · 11 comments

Comments

@artemave
Copy link

  • Operating System:
    Ubuntu 14.04
  • Node.js version:
    11.14.0
  • fs-extra version:
    7.0.1

My travis-ci build (runs on cron - so not triggered by code changes) suddenly started getting this error:

 TypeError: Cannot read property 'code' of null
      at rimrafSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:257:12)
      at options.readdirSync.forEach.f (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:39)
      at Array.forEach (<anonymous>)
      at rmkidsSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:26)
      at rmdirSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:281:7)
      at rimrafSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:252:7)
      at options.readdirSync.forEach.f (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:39)
      at Array.forEach (<anonymous>)
      at rmkidsSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:26)
      at rmdirSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:281:7)
      at rimrafSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:252:7)
      at options.readdirSync.forEach.f (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:39)
      at Array.forEach (<anonymous>)
      at rmkidsSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:26)
      at rmdirSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:281:7)
      at rimrafSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:252:7)
      at options.readdirSync.forEach.f (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:39)
      at Array.forEach (<anonymous>)
      at rmkidsSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:26)
      at rmdirSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:281:7)
      at rimrafSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:252:7)
      at options.readdirSync.forEach.f (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:39)
      at Array.forEach (<anonymous>)
      at rmkidsSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:26)
      at rmdirSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:281:7)
      at rimrafSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:252:7)
      at options.readdirSync.forEach.f (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:39)
      at Array.forEach (<anonymous>)
      at rmkidsSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:291:26)
      at rmdirSync (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:281:7)
      at Object.rimrafSync [as removeSync] (/home/travis/build/featurist/create-hyperdom-app/node_modules/fs-extra/lib/remove/rimraf.js:252:7)
      at TmpDir.remove (/home/travis/build/featurist/create-hyperdom-app/test/tmpDir.js:24:8)
      at Context.after (/home/travis/build/featurist/create-hyperdom-app/test/createAppSpec.js:68:22)

Looks as if fs-extra is catching an error, but the error turns out to be null. Not sure how this is possible.

Link to the build log https://travis-ci.org/featurist/create-hyperdom-app/builds/525146003

@GitNomster
Copy link

GitNomster commented May 17, 2019

Same problem in v. 8.0.1 when trying to MoveSync with overwrite.

@RyanZim
Copy link
Collaborator

RyanZim commented May 17, 2019

Seems https://github.com/jprichardson/node-fs-extra/blob/master/lib/remove/rimraf.js#L251 must be showing that it's a directory, but we're getting ENOTDIR when we try to rmdirSync: https://github.com/jprichardson/node-fs-extra/blob/master/lib/remove/rimraf.js#L278 No idea how a path can simultaneously be both a directory and not a directory.

@RyanZim
Copy link
Collaborator

RyanZim commented May 21, 2019

@GitNomster What platform, Node, and fs-extra version?

@GitNomster
Copy link

@RyanZim Platform: Win 10 x64; Node: 10.15.1; fs-extra: 8.0.1

@kingzez
Copy link

kingzez commented Sep 20, 2019

Same question in Electron

@NyaomiDEV
Copy link

I'm getting this one too! (and it's annoying)

@NyaomiDEV
Copy link

Okay I found the culprit about this, and it has to do with Electron wrapping the "fs" module to handle asar files as directories.
ASAR archives are seen by Electron's "fs" module as directories, but they are files.

Solution: require "original-fs" if we're under Electron!

@RyanZim
Copy link
Collaborator

RyanZim commented Jun 3, 2020

If somebody could get a reduced test case for this (based on electron-quick-start, if it's an electron issue); that would be a tremendous help. Also, wondering how this plays out with fs.rmdir recursive option: #806.

@RyanZim
Copy link
Collaborator

RyanZim commented Jun 15, 2020

Possibly related: electron/electron#23890

@KalebMatthews
Copy link

Simple solution for electron is to set the process to not treat asar files differently with: process.noAsar = true; then after the process is finished whatever logic you are doing set it back to: process.noAsar = false;

@RyanZim
Copy link
Collaborator

RyanZim commented Apr 2, 2021

Closing since this hasn't ever been confirmed; and may have been fixed by electron. Happy to reopen in the future.

@RyanZim RyanZim closed this as completed Apr 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants