I am running the npm install in a public GitHub repo and it has locked the express at 4.17.0 in package-lock.json file which is the correc
npm install xxx will every time generate a new lock file. (Actually it just ignores lock file and generate each time it execute)
npm ci on the other hand, is the command to install packages based on lock file instead of package.json
Remove the carrot ^ sign. Then it'll stay locked at 4.17.0.