Skip to content

Appending CRA gitignore to existing .gitignore fails due to fs-extra v8 #7892

Closed
@mjsarfatti

Description

@mjsarfatti

Describe the bug

Creating a new app in a folder with an existing .gitignore fails with error Error: dest already exists.. This is using the master branch (I discovered it while forking it to customize CRA), but it will happen on tagged releases as well.

The reason is react-scripts/scripts/init.js:175 checks for:

  if (err.code === 'EEXIST') {

in order to decide whether to append CRA's gitignore to the existing file. But fs-extra/moveSync v8 instead of throwing an error with code EEXIST seems to be throwing an error with message dest already exists. and undefined code.

Before v8: jprichardson/node-fs-extra@0bc36ff#diff-ed59bd97e02b23238a4db2f82738f5f3L29

After v8: jprichardson/node-fs-extra@0bc36ff#diff-04b1b5a0bc03a081b62ca97774ac1443R27

Did you try recovering your dependencies?

Not applicable.

Which terms did you search for in User Guide?

"EEXIST", "dest already exists", "gitignore".

Environment

Environment Info:

  System:
    OS: macOS 10.15
    CPU: (8) x64 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
  Binaries:
    Node: 10.14.2 - /usr/local/bin/node
    Yarn: 1.16.0 - ~/.yarn/bin/yarn
    npm: 6.10.3 - ~/npm/bin/npm
  Browsers:
    Chrome: 77.0.3865.120
    Firefox: 70.0
    Safari: 13.0.2
  npmPackages:
    react: Not Found
    react-dom: Not Found
    react-scripts: Not Found
  npmGlobalPackages:
    create-react-app: Not Found

Steps to reproduce

  1. Create a folder and a sample .gitignore file
  2. cd into the folder and run npx create-react-app .

Expected behavior

App is initialized and CRA gitignore is appended to existing .gitignore

Actual behavior

Installation fails. Here is the last lines of the console log:

...
├─ terser-webpack-plugin@2.2.1
├─ terser@4.3.9
├─ url-loader@2.2.0
├─ webpack-manifest-plugin@2.2.0
└─ webpack@4.41.2
✨  Done in 20.68s.
/Users/manus/Lavori/Web/AGENCY-APPS/2019/2019n13_Bip_SimPLE/simple-app/node_modules/react-scripts-laravel/scripts/init.js:182
      throw err;
      ^

Error: dest already exists.
    at doRename (/Users/manus/Lavori/Web/AGENCY-APPS/2019/2019n13_Bip_SimPLE/simple-app/node_modules/fs-extra/lib/move-sync/move-sync.js:25:34)
    at Object.moveSync (/Users/manus/Lavori/Web/AGENCY-APPS/2019/2019n13_Bip_SimPLE/simple-app/node_modules/fs-extra/lib/move-sync/move-sync.js:17:10)
    at module.exports (/Users/manus/Lavori/Web/AGENCY-APPS/2019/2019n13_Bip_SimPLE/simple-app/node_modules/react-scripts-laravel/scripts/init.js:168:8)
    at [eval]:3:14
    at Script.runInThisContext (vm.js:96:20)
    at Object.runInThisContext (vm.js:303:38)
    at Object.<anonymous> ([eval]-wrapper:6:22)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at evalScript (internal/bootstrap/node.js:586:27)
    at startup (internal/bootstrap/node.js:264:9)

Aborting installation.
  node  has failed.

Deleting generated file... node_modules
Deleting generated file... package.json
Deleting generated file... yarn.lock
Done.

Reproducible demo

Not applicable.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions