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

Watchman crawl failed. #346

Closed
vjeux opened this issue Aug 3, 2016 · 28 comments
Closed

Watchman crawl failed. #346

vjeux opened this issue Aug 3, 2016 · 28 comments

Comments

@vjeux
Copy link
Contributor

vjeux commented Aug 3, 2016

I'm running into this error on master with a project created with npm run create-react-app ../test

jest-haste-map: Watchman crawl failed. Retrying once with node crawler.
Error: Watchman error: resolve_projpath: none of the files listed in global config root_files are present in path /Users/vjeux/random/test or any of its parent directories. Make sure watchman is running for this project. See https://facebook.github.io/watchman/docs/troubleshooting.html.

screen shot 2016-08-03 at 9 52 57 am

I came up with the "Painless unit testing" sentence. It's now a reality :)

@gaearon
Copy link
Contributor

gaearon commented Aug 3, 2016

None of these words make any sense to our users: jest-haste-map watchman crawl node crawler resolve_projpath config root_files. They shouldn’t be in our messages.

If we recommend installing Watchman we should explain why and what it gives you (faster watching)? The message should not include any references to configs and jargon.

@gaearon
Copy link
Contributor

gaearon commented Aug 3, 2016

Also the warning links to https://facebook.github.io/watchman/docs/troubleshooting.html which says nothing about how to install Watchman.

https://facebook.github.io/watchman/docs/install.html suggests to use brew or macports which is not at all beginner-friendly.

I think we need a flag to completely disable this warning/suggestion because it’s optional, and instructions are unfortunately confusing. We can still put instructions on “how to speed up watching” in our Howto.

@gaearon gaearon added this to the 0.3.0 milestone Aug 3, 2016
@vjeux
Copy link
Contributor Author

vjeux commented Aug 3, 2016

cc @cpojer

@gaearon
Copy link
Contributor

gaearon commented Aug 3, 2016

@vjeux Did you previously install RN? @cpojer told me this warning only shows up if:

  • The folder isn't a Git repo
  • You already have Watchman

@vjeux
Copy link
Contributor Author

vjeux commented Aug 3, 2016

I'm a Facebook engineer so watchman is installed on my machine by default ;)

@gaearon
Copy link
Contributor

gaearon commented Aug 3, 2016

Ah that explains it. 😄

@cpojer cpojer self-assigned this Aug 4, 2016
@cpojer
Copy link
Contributor

cpojer commented Aug 4, 2016

I confirmed that this error is only thrown when using Facebook equipment so I think this isn't actionable and we can close it. I expect FB engineers to figure out how to use watchman, however we might want to improve the error message in Jest to make sure people understand it is no reason to panic.

how to repro a non fb-environment:
create ~/watchman and put {} into the file then run:
watchman shutdown-server; WATCHMAN_CONFIG_FILE=~/watchman watchman --foreground --logfile=/dev/stdout --no-save-state --statefile=/dev/null

then run jest --no-cache and you shouldn't see the error.

@cpojer cpojer closed this as completed Aug 4, 2016
@gaearon
Copy link
Contributor

gaearon commented Aug 4, 2016

Thanks for checking.

@gaearon gaearon removed this from the 0.3.0 milestone Sep 1, 2016
@pjm17971
Copy link

pjm17971 commented Sep 6, 2016

For what it's worth, I got this error as well, so it can happen on non-fb equipment. It was because I'd tried jest in the past and ended up with watchman installed on my machine. At least I think that's how I ended up with it. Uninstalling it made the error go away. It would be nice to not ever show this message though. It was cryptic.

@gaearon gaearon reopened this Sep 6, 2016
@gaearon gaearon added this to the 1.0.0 milestone Sep 6, 2016
@cpojer
Copy link
Contributor

cpojer commented Sep 6, 2016

I think we should close this one. I understand the concern but I updated the error message to say to create a .watchmanconfig file in Jest 15. If you have watchman installed manually, I feel like it is ok for Jest to try to use it and tell you how to get rid of the message (git init, hg init or touch .watchmanconfig).

@cpojer cpojer closed this as completed Sep 6, 2016
@cpojer
Copy link
Contributor

cpojer commented Sep 6, 2016

@pjm17971
Copy link

pjm17971 commented Sep 7, 2016

Would something like "Watchman is installed but not running. Using standard watcher instead." be less frightening and filled with words I don't understand? Maybe this is all kind of edge case, but I thought it was worth a mention.

@cpojer
Copy link
Contributor

cpojer commented Sep 7, 2016

The problem is that we have to surface watchman's error and we can't hide how cryptic it is. Maybe create an issue on watchman's bug tracker about improving their error messages?

@saimonmoore
Copy link
Contributor

I'm a new user to react-native, just got it installed. The documentation seems to be missing the react-native start step and then I noticed the same watchman warning as in this thread (I'm not a facebook engineer :trollface: ) so I think the docs are still lacking a section about how to improve performance of the watchers in general. My 2c.

@epitaphmike
Copy link

epitaphmike commented Jan 28, 2017

I came across this issue this morning when running Jest on a different machine. I had no idea I had watchman installed. Looking in my usr/local/bin I found out I installed it back in April 2005 along with React-Native when I was experimenting. I will post an issue with watchman in regards to their error message in hopes they will make it less cryptic.

facebook/watchman#428

@gaearon
Copy link
Contributor

gaearon commented Feb 24, 2017

I found out I installed it back in April 2005 along with React-Native when I was experimenting

Are you a time traveler? 😄

@epitaphmike
Copy link

Don't tell anyone! Though 2015 sounds better.

@VikramK
Copy link

VikramK commented Jul 5, 2017

This fixed for me.

npm r -g watchman
brew update && brew upgrade
brew install watchman

@Vincent-Lz-Zhang
Copy link

Hi @cpojer ,
I tried your instructions:

create /watchman and put {} into the file then run:
watchman shutdown-server; WATCHMAN_CONFIG_FILE=
/watchman watchman --foreground --logfile=/dev/stdout --no-save-state --statefile=/dev/null

then run jest --no-cache and you shouldn't see the error

And it does not work, btw, 'WATCHMAN_CONFIG_FILE=~/watchman' does not look like a command.

On the other hand, my situation is:

  1. Windows 7 Pro 64-bit,
  2. I previously created a RN app by following the official instructions, and it works in Genymotion, so I have watchman installed globally already.
  3. I checked out a repo from Github, which is a RN boilerplate, and when running it, I got this error, it is not exactly the same as reported by vjeux, in my case it is:

jest-haste-map: Watchman crawl failed. Retrying once with node crawler.
Usually this happens when watchman isn't running. Create an empty .watchmanco nfig file in your project's root folder or initialize a git or hg repository in
your project.
Error: Watchman was not found in PATH. See https://facebook.github.io/watchma
n/docs/install.html for installation instructions
Watchman: Watchman was not found in PATH. See https://facebook.github.io/watch
man/docs/install.html for installation instructions
ERROR Watchman was not found in PATH. See https://facebook.github.io/watchman
/docs/install.html for installation instructions
{"code":"ENOENT","errno":"ENOENT","syscall":"spawn watchman","path":"watchman","
spawnargs":["--no-pretty","get-sockname"]}
Error: Watchman was not found in PATH. See https://facebook.github.io/watchman/
docs/install.html for installation instructions
at exports._errnoException (util.js:1018:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:367:16)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)

  1. I tried uninstalling watchman and re-installing it, not work.
  2. I tried your approach, not work either

I would really appreciate if you can help me out. Thank you.

@shireen
Copy link

shireen commented Jul 11, 2017

My error is slightly different:
jest-haste-map: Watchman crawl failed. Retrying once with node crawler.
Usually this happens when watchman isn't running. Create an empty .watchmanconfig file in your project's root folder or initialize a git or hg repository in your project.
Error: Watchman error: fileData.mtime_ms.toNumber is not a function. Make sure watchman is running for this project. See https://facebook.github.io/watchman/docs/troubleshooting.html.
Loading dependency graph, done.

Any ideas on what this means and/or how I can fix it?

@valetarton
Copy link

@shireen I am having the exact same error

@rttomlinson
Copy link

@shireen @valetarton I'm running into this issue now. Did ya'll figure out a solution or workaround?
My specific error is Error: Watchman error: query failed: synchronization failed: Unknown error.

I'm on Windows 7. Thanks

@lvlinhaohan2010
Copy link

lvlinhaohan2010 commented Oct 30, 2017

it fixed in my solution:

$ brew uninstall watchman
$ brew install watchman
Warning: watchman 4.9.0 is already installed, it's just not linked.
$ brew unlink watchman
$ brew link --overwrite watchman

re init react-native project,it will work.

@arnoldbird
Copy link

arnoldbird commented Apr 4, 2018

Still having this issue. The solutions presented above do not work for me. I tried Vikram's solution and lvlinha's solution. I still see the same error message. I also have created a .watchman file in my project root as instructed by the message, to no avail.

UPDATE: Fixed when I did some module upgrades. Not sure what fixed it, but I upgraded to npm ^5.8.0, react ^16.3.0, and expo SDK v26.

UPDATE: Nope, it's still happening, but it depends on if I run react-native run-ios as root or not. If I run the simulator as root, I don't get the watchman error, but the packager behaves strangely... very labored. If I don't run it as root, I get the error but the packager runs smoothly and the simulator loads much more quickly. I guess the upgrades didn't help.

UPDATE: Fixed by recursively changing the owner of .git to my non-root user.

@Manoj002
Copy link

After reading all comments and implementing them again getting same error

expo: 27.0.1
react: 16.3.1
react-native: 0.55.2

@theapache64
Copy link

theapache64 commented Jun 19, 2018

watchman shutdown-server worked for me.

@Manoj002
Copy link

Manoj002 commented Jun 19, 2018

i simply copied the code from my project, created a new project and pasted there...
and it works:)
UPDATE:
@theapache64 ,
I guess after i ran "npm audit" and resolved some vulnerabilities after that watchman stopped working in that project and when i created new project, copied the code from previous project and run the packager, it worked (:

@ajmalpkc
Copy link

@theapache64 worked for me too.

linhaobin pushed a commit to linhaobin/create-react-app-hb that referenced this issue Aug 30, 2018
Fixes facebook#346.

This is a workaround for a bug in uglifyjs2
(mishoo/UglifyJS#2842), which can cause name
collisions when a function with arguments is inlined. This can cause an
unintended shadowing of a `var` or `let`, or a `TypeError: Assignment to
constant variable` in case of a `const`.
@lock lock bot locked and limited conversation to collaborators Jan 19, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests