Create React App - Build keeps failing on Netlify but works locally - create-react-app

10:52:56 PM: There might be a problem with the project dependency tree.
10:52:56 PM: It is likely not a bug in Create React App, but something you need to fix locally.
10:52:56 PM: The react-scripts package provided by Create React App requires a dependency:
10:52:56 PM: "babel-jest": "23.6.0"
10:52:56 PM: Don't try to install it manually: your package manager does it automatically.
10:52:56 PM: However, a different version of babel-jest was detected higher up in the tree:
10:52:56 PM: /opt/build/repo/node_modules/babel-jest (version: 24.7.1)
10:52:56 PM: Manually installing incompatible versions is known to cause hard-to-debug issues.
10:52:56 PM: If you would prefer to ignore this check, add SKIP_PREFLIGHT_CHECK=true to an .env file in your project.
10:52:56 PM: That will permanently disable this message but you might encounter other issues.
10:52:56 PM: To fix the dependency tree, try following the steps below in the exact order:
10:52:56 PM: 1. Delete package-lock.json (not package.json!) and/or yarn.lock in your project folder.
10:52:56 PM: 2. Delete node_modules in your project folder.
10:52:56 PM: 3. Remove "babel-jest" from dependencies and/or devDependencies in the package.json file in your project folder.
10:52:56 PM: 4. Run npm install or yarn, depending on the package manager you use.
10:52:56 PM: In most cases, this should be enough to fix the problem.
10:52:56 PM: If this has not helped, there are a few other things you can try:
10:52:56 PM: 5. If you used npm, install yarn (http://yarnpkg.com/) and repeat the above steps with it instead.
10:52:56 PM: This may help because npm has known issues with package hoisting which may get resolved in future versions.
10:52:56 PM: 6. Check if /opt/build/repo/node_modules/babel-jest is outside your project directory.
10:52:56 PM: For example, you might have accidentally installed something in your home folder.
10:52:56 PM: 7. Try running npm ls babel-jest in your project folder.
10:52:56 PM: This will tell you which other package (apart from the expected react-scripts) installed babel-jest.
10:52:56 PM: If nothing else helps, add SKIP_PREFLIGHT_CHECK=true to an .env file in your project.
10:52:56 PM: That would permanently disable this preflight check in case you want to proceed anyway.
10:52:56 PM: P.S. We know this message is long but please read the steps above :-) We hope you find them helpful!
So I recently pushed a new build to my app and got the above error, something to do with babel-jest. This is not in my package.json, it must be a peer dependency or something.
The build works great locally, I have confirmed by deleting the node_modules and the package-lock.json and it all installs and runs just fine.
When I push to master, netlify logs this error and just won't move on.

So what fixed it for me was to search in the package-lock.json for babel-jest. I then added that version to a resolutions entry in my package.json as follows:
"resolutions": {
"babel-jest": "23.6.0"
}
This solved the problem and my app published correctly on Netlify.

I know this question is kind of old and the answer has already been chosen but the above answer doesn't work for me.So here how i solve my problem
put package-lock.json in .gitignore file but if you already uploaded it to github without mentioning it to .gitignore file then remove it from git cache(local repo)
git rm -r --cached package-lock.json
git add .
git commit -m 'Remove package-lock.json'
git push origin master
In you netlify site goto Site settings->Build & Deploy->Environment and put the following inside the environement variable
SKIP_PREFLIGHT_CHECK=true
and put the follow to Build setting->Build Command if your netlify build assume warning as error
CI=false npm run build

Related

"resolved" and "integrity" go missing in package-lock.json

Ocassionally, when installing an (unrelated) dependency, I lose the resolved values from each of my private nexus repository dependencies, meaning that when my build server runs npm ci it falls back to attempting to install these from the npm repository, which obviously fails.
I am using npm 8.5.5/node 16.15
I am using NPM's workspaces feature to construct a monorepo, meaning that I have several project package.json files as well as a root package.json
My .npmrc (at root level) looks like this:
engine-strict=true
#foo:registry=http://prod-nexus.foo.com/repository/bar/
always-auth=true
After an (unrelated, random) install my package-lock.json will have this change:
"#foo": {
"version": "1.2.3",
- "resolved": "http://prod-nexus.foo.com/repository/bar/#foo/-/lib-1.2.3.tgz,
- "integrity": "sha...",
+ "license": "MIT",
"dependencies": { ....
Note that the resolved and integrity fields have disappeared and the license has been added.
I have run into this problem several times, each time I have solved it by rolling back and some manual editing and eventually it goes away, but I really need to understand what is going on.
What is causing this, why is it random, what can I do to defend against it?
This could be related to the issue https://github.com/npm/cli/issues/4263
clean the npm cache npm cache clean -f
run npm install again
If that doesn't work, try it again while deleting more:
clean the npm cache npm cache clean -f
remove node_modules in project folder
remove package-lock.json file
run npm install again

Use yarn and npm in Gitlab CI

I have a project which runs, in Gitlab CI, Yarn v1.22.5.
Among all its dependencies, there is one which is a Github repository. It runs a prepare script and it has package-lock.json file. For that project is it used npm indeed.
When it comes to install that dependency, I can see (in the Gitlab CI console) the following warning:
info No lockfile found.
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
It seems that Yarn tries to install that dependency but it noticed the package-lock.json file from npm.
Is there a way to avoid this?
I would like to understand if there is a way to use npm when it comes to install that dependency.

HRM module stop working on the same project on which it is working earlier

Hot reload module stop working on my project because of which i have to run this command each time i make any changes.
npm run serve
This usually is npm packages problem and is often remedied by reinstallation
first remove the node_modules directory in project root
also you can clear the npm cache npm cache clean --force(this is optional)
then reinstall packages npm i

Update version number In package.json and package-lock.json without updating dependencies

TL;DR How do I update package.json and package-lock.json version number without updating dependencies?
We have a problem where we want to uptick our version number after development and before deployments.
However if I uptick the version in my package.json and then npm install it could change versions of dependencies which could cause issues of production running with different dependencies than what developers tested their code with.
We use npm ci in our ci system, and my understanding that it would build off the package-lock.json file. The issue comes in if our package-lock.json has a version that previously was built the ci system will just use what it has previously built. I can't update our ci System.
I could manually update the version in package-lock.json but that feels wrong. Is there a best practice for this situation?
This question is almost a year old, but
npm install --package-lock-only
should do the trick.
The --package-lock-only argument will only update the package-lock.json, instead of checking node_modules and downloading dependencies.
https://docs.npmjs.com/cli/install
It's buried near the bottom of the docs page.
A better way would be using npm version command to update the version in both package.json and package-lock.json
npm version <version> --workspace=<package-name>

How to remove an invalid local dependency from package-lock.json and package.json?

Let's say that someone installed an invalid local dependency. (file does not exists locally)
package-lock.json
"mock-framework": {
"version": "file:../../../mock-framework",
package.json:
"dependencies": {
"mock-framework": "file:../../../mock-framework"
}
I need to reinstall the framework, but it's located differently on my machine and does not follow the structure that was provided in the package locks. Because running the npm install command is giving me the error:
Could not install from "../../../mock-framework" as it does not contain a package.json file.
Would it be possible to clean it up through the command line? I tried with npm uinstall and still no luck.
I recently faced similar issue with local dependency integrity in package-lock.json
Ideally npm uninstall should remove the entry in package-lock.json but since it is not and you only have one local framework as changed dependency, you can try following -
Fix the dependency path and run rm package-lock.json && npm i
Hope I'm inline to your problem statement.