clutch icon indicating copy to clipboard operation
clutch copied to clipboard

Document or support building with node 17

Open jpeach opened this issue 3 years ago • 3 comments

Description

If you are following the local build instructions, it tells you to install node. However IIUC, the javascript dependencies are explicitly pinned to node 16:

frontend/package.json:    "node": ">=16.0.0 <17",

Homebrew currently defaults to installing node 17, though there is a compatibility node 16 package (that requires you to explicitly install and link a different package).

Expected Behavior

Actual Behavior

node errors out if you follow the instructions:

 % make
tools/compile-protos.sh -c "/Users/jpeach/upstream/clutch/api"
info: compiling go
/Users/jpeach/upstream/clutch/api/api/v1
/Users/jpeach/upstream/clutch/api/assets/v1
/Users/jpeach/upstream/clutch/api/audit/v1
/Users/jpeach/upstream/clutch/api/authn/v1
/Users/jpeach/upstream/clutch/api/authz/v1
/Users/jpeach/upstream/clutch/api/aws/dynamodb/v1
/Users/jpeach/upstream/clutch/api/aws/ec2/v1
/Users/jpeach/upstream/clutch/api/aws/kinesis/v1
/Users/jpeach/upstream/clutch/api/bot/slackbot/v1
/Users/jpeach/upstream/clutch/api/chaos/experimentation/v1
/Users/jpeach/upstream/clutch/api/chaos/redisexperimentation/v1
/Users/jpeach/upstream/clutch/api/chaos/serverexperimentation/v1
/Users/jpeach/upstream/clutch/api/config/gateway/v1
/Users/jpeach/upstream/clutch/api/config/middleware/accesslog/v1
/Users/jpeach/upstream/clutch/api/config/module/bot/slackbot/v1
/Users/jpeach/upstream/clutch/api/config/module/chaos/experimentation/xds/v1
/Users/jpeach/upstream/clutch/api/config/module/chaos/redisexperimentation/v1
/Users/jpeach/upstream/clutch/api/config/module/chaos/serverexperimentation/v1
/Users/jpeach/upstream/clutch/api/config/module/featureflag/v1
/Users/jpeach/upstream/clutch/api/config/module/feedback/v1
/Users/jpeach/upstream/clutch/api/config/module/proxy/v1
/Users/jpeach/upstream/clutch/api/config/module/sourcecontrol/v1
/Users/jpeach/upstream/clutch/api/config/service/auditsink/slack/v1
/Users/jpeach/upstream/clutch/api/config/service/audit/v1
/Users/jpeach/upstream/clutch/api/config/service/authn/v1
/Users/jpeach/upstream/clutch/api/config/service/authz/v1
/Users/jpeach/upstream/clutch/api/config/service/aws/v1
/Users/jpeach/upstream/clutch/api/config/service/bot/v1
/Users/jpeach/upstream/clutch/api/config/service/chaos/experimentation/terminator/v1
/Users/jpeach/upstream/clutch/api/config/service/db/postgres/v1
/Users/jpeach/upstream/clutch/api/config/service/envoyadmin/v1
/Users/jpeach/upstream/clutch/api/config/service/github/v1
/Users/jpeach/upstream/clutch/api/config/service/k8s/v1
/Users/jpeach/upstream/clutch/api/config/service/sourcegraph/v1
/Users/jpeach/upstream/clutch/api/config/service/temporal/v1
/Users/jpeach/upstream/clutch/api/config/service/topology/v1
/Users/jpeach/upstream/clutch/api/core/envoy/v1
/Users/jpeach/upstream/clutch/api/core/project/v1
/Users/jpeach/upstream/clutch/api/envoytriage/v1
/Users/jpeach/upstream/clutch/api/featureflag/v1
/Users/jpeach/upstream/clutch/api/feedback/v1
/Users/jpeach/upstream/clutch/api/healthcheck/v1
/Users/jpeach/upstream/clutch/api/k8s/v1
/Users/jpeach/upstream/clutch/api/project/v1
/Users/jpeach/upstream/clutch/api/proxy/v1
/Users/jpeach/upstream/clutch/api/resolver/aws/v1
/Users/jpeach/upstream/clutch/api/resolver/k8s/v1
/Users/jpeach/upstream/clutch/api/resolver/v1
/Users/jpeach/upstream/clutch/api/sourcecontrol/github/v1
/Users/jpeach/upstream/clutch/api/sourcecontrol/v1
/Users/jpeach/upstream/clutch/api/sourcegraph/v1
/Users/jpeach/upstream/clutch/api/timeseries/v1
/Users/jpeach/upstream/clutch/api/topology/v1
/Users/jpeach/upstream/clutch/backend/internal/test/pb/test.proto
info: compiling javascript bundle
OK
./build/bin/yarn.sh --cwd frontend install --frozen-lockfile
yarn install v1.22.11
[1/5] 🔍  Validating package.json...
error @clutch-sh/[email protected]: The engine "node" is incompatible with this module. Expected version ">=16.0.0 <17". Got "17.5.0"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
make: *** [yarn-install] Error 1

Version 7962bdbf79d6b5d93c1b5ac561dd687eab3f3560

Other Context

Downgrading node seems to make the build work:

% brew remove node
% brew install node@16
% brew link --overwrite node@16

jpeach avatar Feb 16 '22 06:02 jpeach

One thing I've found to make this convenient is you can use nvm to be able to quickly switch between node versions without having to overwrite / reinstall every time. For example once you have nvm set up you can use nvm use 16 to quickly switch from 17 to 16 inside that shell, then when nvm use 17 or close the window to switch back. I know this isn't a real solution to the problem but just thought I'd point this out since I have found it to be useful.

https://github.com/nvm-sh/nvm/blob/master/README.md

smonero avatar Feb 16 '22 15:02 smonero

@jpeach would it be helpful to have a note earlier on in the local build guide around requiring node 16?

dschaller avatar Feb 16 '22 19:02 dschaller

@jpeach would it be helpful to have a note earlier on in the local build guide around requiring node 16?

Yeh that would be helpful. I don't know how compatible the versions are - is it reasonable to remove the version check?

jpeach avatar Feb 16 '22 22:02 jpeach