Open jakelauer opened 4 years ago
Note: We have multiple machines failing with this error
The CLI and the browser runtime source code are in one package. Most people are only using protobuf.js for their runtime dep. For providing a smaller installed size, the author does not install the CLI's dependencies by default. Only when the CLI is used will it check whether it's dependencies were installed. If not, it will start a child process to install them. The child process would execute an npm install ...
command. But that may cause problems such as insufficient permissions in system or failed to find NPM due to environment variables.
Is there a mitigation for this? We tried including the libraries in our own package.json but it still installs them anyway.
Is there a mitigation for this? We tried including the libraries in our own package.json but it still installs them anyway.
Because the libraries are installed in <root>/cli/node_modules
instead of <root>/node_modules
. You could remove the <root>/cli/package.json
and remove the .setup()
caller.
https://github.com/protobufjs/protobuf.js/blob/master/cli/pbjs.js#L7 https://github.com/protobufjs/protobuf.js/blob/master/cli/pbts.js#L8
I don't have the option to modify the files inside node_modules as this issue is happening during build on a machines that run npm install
for every build.
This is so annoying. Installing packages dynamically!? it should be avoided.
Agreed @cainiaokan . It's easy to avoid because NPM is specifically built the way it's built to avoid things like this.
This is so annoying. Installing packages dynamically!? it should be avoided.
Any update on this? That is 100% accurate in that it should be avoided
add espree@^3.5.4
to devDependencies
manually and try again
"devDependencies": {
...
"estraverse": "^5.1.0",
"protobufjs": "^6.10.1",
"estraverse": "^5.1.0",
"semver": "^7.1.2",
"uglify-js": "^3.7.7",
"tmp": "^0.2.0",
"chalk": "^4.0.0",
"jsdoc": "^3.6.3"
...
}
Any update?
It looks like there's a PR that could fix this by divorcing the CLI from the main package. Last updated 3 days ago: https://github.com/protobufjs/protobuf.js/pull/1234
Same problem with version 6.11.2. installing jsdoc@^3.6.3 installing uglify-js@^3.7.7
Does not happen on version 6.11.2
under node 14.17
. I fixed my issue by bumping node (was 10) + protobufjs (was 6.8.8).
Fixed for me with npm i -D installing jsdoc@^3.6.3
Any solution? Now I fixed it by npm i -D installing jsdoc@^3.6.3 uglify-js@^3.3.25 espree@^3.5.4 escodegen@^1.9.1
protobuf.js version: 6.8.8
Expected: Protobufjs runs and installs dependencies Actual: Protobufjs fails to install dependencies
Any ideas for how to mitigate this?