create-react-app: npm start fails after copying a generated project to a new directory
Here is the failure:
$ npm start
> bug-test@0.0.1 start /Users/dceddia/Projects/pure-react/sandbox/bug-test-copy
> react-scripts start
module.js:339
throw err;
^
Error: Cannot find module 'cross-spawn'
at Function.Module._resolveFilename (module.js:337:15)
at Function.Module._load (module.js:287:25)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Object.<anonymous> (/Users/dceddia/Projects/pure-react/sandbox/bug-test-copy/node_modules/.bin/react-scripts:3:13)
at Module._compile (module.js:425:26)
at Object.Module._extensions..js (module.js:432:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Function.Module.runMain (module.js:457:10)
npm ERR! Darwin 14.5.0
npm ERR! argv "/usr/local/Cellar/node/5.0.0/bin/node" "/Users/dceddia/.node/bin/npm" "start"
npm ERR! node v5.0.0
npm ERR! npm v3.3.12
npm ERR! code ELIFECYCLE
npm ERR! bug-test@0.0.1 start: `react-scripts start`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bug-test@0.0.1 start script 'react-scripts start'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the bug-test package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! react-scripts start
npm ERR! You can get their info via:
npm ERR! npm owner ls bug-test
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /Users/dceddia/Projects/pure-react/sandbox/bug-test-copy/npm-debug.log
To reproduce:
$ create-react-app bug-test
$ cp -r bug-test bug-test-copy
$ cd bug-test-copy
$ npm start
At first I thought it might have something to do with having run npm start
from within bug-test
before copying it, but skipping that step didn’t have any effect.
Removing node_modules
and reinstalling them fixes it:
$ cd bug-test-copy
$ rm -r node_modules
$ npm install
$ npm start # works!
Using cp -a
instead of cp -r
does not cause the problem:
$ create-react-app bug-test
$ cp -a bug-test bug-test-copy
$ cd bug-test-copy
$ npm start # works!
I’m running Node 5.0.0 and npm 3.3.12.
I tried (via nvm) with Node 6.3.1 and npm 3.10.3 and got the same behavior.
The cp -a
vs cp -r
makes me think this might be an npm bug.
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Reactions: 11
- Comments: 22 (4 by maintainers)
I was intrigued so I dug into this real quick.
The problem is that
cp -r
doesn’t necessarily preserve symlinks, and just copies the file contents instead.npm run start
uses thereact-scripts
bin file, which is at./node_modules/.bin/react-scripts
however, this should be symlinked into./node_modules/react-scripts/bin/react-scripts.js
. This symlink means that npm can find thecross-spawn
module which is a subdependency of react-scripts.However,
cp -r
doesn’t preserve that symlink, and instead just copies the contents of the.bin
file. npm now doesn’t know to look within thenode_modules/react-scripts/node_modules
dir to find cross-spawn.cp -a
will preserve symlinks, so avoids the problem.Looks like
diff
in general just resolves symlinks and compares the file contents, hence it not spotting this issue.I’m not sure that this can really be resolved by
create-react-app
. Perhaps npm should be detecting non-symlinks in./node_modules/.bin
I dunno?@allpratik If you have a
package-lock.json
file, try:I faced this problem when moving from
npm
toyarn
, andsolved it
@kenkoooo Thank you so much your solution worked perfectly!
@kenkoooo Thanks again you solution fix my app.
@kenkoooo Thank you!
Manually running the
start.js
script works whether I’m using the project copied withcp -a
orcp -r
:Oddly, when comparing the 2 projects side-by-side, the
node_modules
directories appear to be identical:Also if you use npm 5.x, downgrade to 4.x.
npm 5.x has many known issues right now and is buggy.
Same problem here
Facing the same issue! But any of above mentioned solutions didn’t work for me. I’m on Ubuntu 16.04.
@kenkoooo Thanks it worked for me.
If npm is failing it’s worth giving yarn a try. I had a few intermittent npm failures on our CI server at one point, and switching to yarn solved them.