sst / ion

SST v3
https://sst.dev
MIT License
1.97k stars 229 forks source link

sst commands always fail once after homebrew update of sst #324

Open dmeehan1968 opened 5 months ago

dmeehan1968 commented 5 months ago

I've now experienced this problem every time I've updated the sst CLI using homebrew. Regardless of the command (install, deploy, dev commonly used), the first run after upgrade produces an error. It seems that all that is required is to repeat the command, although the error seems to eminate from a desire to check/update providers.

In this case, I pre-emptively ran sst install but that too failed (when I've tried sst deploy or sst dev the CLI emits a messages to the effect of 'installing providers' and then quits).

Attempting a re-run with --verbose doesn't show anything relevant, as the second run always seems to work.

==> Upgrading 1 outdated package:
sst/tap/sst 0.0.323 -> 0.0.326
==> Fetching sst/tap/sst
==> Downloading https://github.com/sst/ion/releases/download/v0.0.326/sst-mac-x86_64.tar.gz
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/718823646/d47feb41-06fb-425f-8b7b-97966122f3d5?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCOD
#################################################################################################################################################################################################### 100.0%
==> Upgrading sst/tap/sst
  0.0.323 -> 0.0.326 
🍺  /usr/local/Cellar/sst/0.0.326: 5 files, 53.3MB, built in 1 second
==> Running `brew cleanup sst`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /usr/local/Cellar/sst/0.0.323... (5 files, 53.3MB)
Removing: /Users/dmeehan/Library/Caches/Homebrew/sst--0.0.323.tar.gz... (20MB)
dmeehan@MacBook-Pro-M1 dashboard % sst install
×  Unexpected error occurred. Please check the logs or run with --verbose for more details.
dmeehan@MacBook-Pro-M1 dashboard % sst install
✓  Installed providers
dmeehan@MacBook-Pro-M1 dashboard % 
thdxr commented 5 months ago

can you run with --verbose next time and show me the output?

dmeehan1968 commented 5 months ago

It looks like the error relates to the installed version of esbuild. See the explanation below for project structure. Whilst I can appreciate that SST might want a specific esbuild version (0.19.10), it seems to only complain about this on the first run, and then subsequently work without warning/error. So either the first run error is spurious, or SST should also be checking this on subsequent runs if it matters.

The following is the brew update:

dmeehan@MacBook-Pro-M1 dashboard % brew upgrade sst 
==> Upgrading 1 outdated package:
sst/tap/sst 0.0.326 -> 0.0.340

Here is the first run of sst deploy --verbose (I don't think it matter which command is used, as long as it provokes the project upgrade (platform, deps):

dmeehan@MacBook-Pro-M1 dashboard % sst deploy --verbose
time=2024-05-02T09:04:41.736+01:00 level=INFO msg="checking for pulumi" path="/Users/dmeehan/Library/Application Support/sst/bin/pulumi"
time=2024-05-02T09:04:42.198+01:00 level=INFO msg="checking for bun" path="/Users/dmeehan/Library/Application Support/sst/bin/bun"
time=2024-05-02T09:04:42.225+01:00 level=INFO msg="initializing project" version=0.0.340
time=2024-05-02T09:04:42.225+01:00 level=INFO msg="esbuild building"
time=2024-05-02T09:04:42.290+01:00 level=INFO msg="esbuild built" outfile=/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/eval/eval-1714637082225.mjs
time=2024-05-02T09:04:42.290+01:00 level=INFO msg="evaluating config"
time=2024-05-02T09:04:42.998+01:00 level=INFO msg="config evaluated"
time=2024-05-02T09:04:43.002+01:00 level=INFO msg="checking platform"
⠋  Upgrading project...time=2024-05-02T09:04:43.003+01:00 level=INFO msg="installing platform"
⠼  Upgrading project...time=2024-05-02T09:04:46.499+01:00 level=INFO msg="installing deps"
time=2024-05-02T09:04:46.499+01:00 level=INFO msg="writing package.json"
time=2024-05-02T09:04:46.500+01:00 level=INFO msg="adding dependency" name=aws
time=2024-05-02T09:04:46.501+01:00 level=INFO msg="fetching deps"
time=2024-05-02T09:04:55.728+01:00 level=ERROR msg="exited with error" err="failed to run bun install bun install v1.1.0 (5903a614)\n Resolving dependencies\n Resolved, downloaded and extracted [215]\n/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/node_modules/esbuild/install.js:133\n    throw new Error(`Expected ${JSON.stringify(versionFromPackageJSON)} but got ${JSON.stringify(stdout)}`);\n          ^\n\nError: Expected \"0.19.10\" but got \"0.20.2\"\n    at validateBinaryVersion (/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/node_modules/esbuild/install.js:133:11)\n    at /Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/node_modules/esbuild/install.js:286:5\n\nNode.js v18.18.1\n\nerror: postinstall script from \"esbuild\" exited with 1\n"
×  Could not install dependencies
dmeehan@MacBook-Pro-M1 dashboard % 

Another run works fine.

Here is the output from npm list of the 'dashboard' project;

├── @aws-sdk/client-timestream-query@3.564.0
├── @observablehq/plot@0.6.14
├── @types/node@20.12.7
├── @types/react-dom@18.2.24
├── @types/react-grid-layout@1.3.5
├── @types/react@18.2.75
├── autoprefixer@10.4.19
├── daisyui@4.10.2
├── eslint-config-next@14.2.3
├── eslint@8.57.0
├── next@14.2.3
├── node-cache@5.1.2
├── postcss-import@16.1.0
├── postcss-nesting@12.1.2
├── postcss@8.4.38
├── react-dom@18.2.0
├── react-grid-layout@1.4.4
├── react-icons@5.2.0
├── react@18.2.0
├── swr@2.2.5
├── tailwind-merge@2.3.0
├── tailwindcss@3.4.3
├── typescript@5.4.5
├── usehooks-ts@3.1.0
└── zod@3.23.4

Note that the nextjs dashboard project is stored in a subdirectory of the main repo where SST is installed:

/sst.config.ts
/packages
  /dashboard
    <next project>

Here is the npm list from the main project:

├── @aws-cdk/aws-scheduler-alpha@2.136.1-alpha.0
├── @aws-cdk/aws-scheduler-targets-alpha@2.136.1-alpha.0
├── @aws-lambda-powertools/metrics@2.0.3
├── @aws-lambda-powertools/parameters@2.0.3
├── @aws-sdk/client-dynamodb@3.552.0
├── @aws-sdk/client-s3@3.552.0
├── @aws-sdk/client-scheduler@3.552.0
├── @aws-sdk/client-secrets-manager@3.552.0
├── @aws-sdk/client-sfn@3.552.0
├── @aws-sdk/client-sqs@3.552.0
├── @aws-sdk/client-timestream-query@3.552.0
├── @aws-sdk/client-timestream-write@3.552.0
├── @aws-sdk/lib-dynamodb@3.552.0
├── @aws-sdk/util-dynamodb@3.552.0
├── @observablehq/plot@0.6.14
├── @pulumi/pulumi@3.112.0
├── @types/aws-lambda@8.10.137
├── @types/crypto-js@4.2.2
├── @types/d3@7.4.3
├── @types/html-minifier-terser@7.0.2
├── @types/jest@29.5.12
├── @types/jsdom@21.1.6
├── @types/node@20.12.7
├── @types/sinon@17.0.3
├── @types/user-agents@1.0.4
├── aws-cdk-lib@2.136.1
├── axios@1.6.8
├── cheerio@1.0.0-rc.12
├── constructs@10.3.0
├── crypto-js@4.2.0
├── d3@7.9.0
├── esbuild@0.20.2
├── https-proxy-agent@7.0.4
├── jest-canvas-mock@2.5.2
├── jest-environment-jsdom@29.7.0
├── jest-mock-extended@3.0.6
├── jest@29.7.0
├── jsdom@24.0.0
├── serverless-mysql@1.5.5
├── sinon@17.0.1
├── source-map-support@0.5.21
├── ts-jest@29.1.2
├── ts-node@10.9.2
├── tsconfig-paths@4.2.0
├── typed-inject@4.0.0
├── typescript@5.4.4
├── user-agents@1.1.170
└── zod@3.22.4
dmeehan1968 commented 4 months ago

Still failing when upgrading from 0.0.340 to 0.0.361, succeeds on second attempt:

dmeehan@MacBook-Pro-M1 dashboard % sst deploy --verbose
time=2024-05-10T19:59:56.091+01:00 level=INFO msg="checking for pulumi" path="/Users/dmeehan/Library/Application Support/sst/bin/pulumi"
time=2024-05-10T19:59:57.345+01:00 level=INFO msg="checking for bun" path="/Users/dmeehan/Library/Application Support/sst/bin/bun"
time=2024-05-10T19:59:57.375+01:00 level=INFO msg="initializing project" version=0.0.361
time=2024-05-10T19:59:57.375+01:00 level=INFO msg="esbuild building"
time=2024-05-10T19:59:57.429+01:00 level=INFO msg="esbuild built" outfile=/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/eval/eval-1715367597375.mjs
time=2024-05-10T19:59:57.429+01:00 level=INFO msg="evaluating config"
time=2024-05-10T19:59:58.101+01:00 level=INFO msg="config evaluated"
time=2024-05-10T19:59:58.105+01:00 level=INFO msg="checking platform"
time=2024-05-10T19:59:58.106+01:00 level=INFO msg="installing platform"
⠋  Upgrading project...time=2024-05-10T20:00:01.223+01:00 level=INFO msg="installing deps"
time=2024-05-10T20:00:01.224+01:00 level=INFO msg="getting package" name=@sst-provider/aws version=latest
⠼  Installing providers...time=2024-05-10T20:00:01.554+01:00 level=INFO msg="getting package" name=@pulumi/aws version=latest
⠇  Installing providers...time=2024-05-10T20:00:02.016+01:00 level=INFO msg="writing package.json"
time=2024-05-10T20:00:02.019+01:00 level=INFO msg="adding dependency" name=aws
time=2024-05-10T20:00:02.029+01:00 level=INFO msg="fetching deps"
time=2024-05-10T20:00:08.561+01:00 level=ERROR msg="exited with error" err="failed to run bun install bun install v1.1.0 (5903a614)\n Resolving dependencies\n Resolved, downloaded and extracted [331]\n/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/node_modules/vite/node_modules/esbuild/install.js:133\n    throw new Error(`Expected ${JSON.stringify(versionFromPackageJSON)} but got ${JSON.stringify(stdout)}`);\n          ^\n\nError: Expected \"0.19.10\" but got \"0.20.2\"\n    at validateBinaryVersion (/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/node_modules/vite/node_modules/esbuild/install.js:133:11)\n    at /Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/node_modules/vite/node_modules/esbuild/install.js:286:5\n\nNode.js v18.18.1\n\nerror: postinstall script from \"esbuild\" exited with 1\n"
×  Could not install dependencies
jayair commented 4 months ago

@dmeehan1968 can you set NO_BUN=true for the command the next time you do this? I wonder if it's related the package manager.

dmeehan1968 commented 4 months ago

@jayair Yes, that seemed to make a difference (assuming nothing else changed and 0.0.361 didn't coincidentally fix it).

Note that it took nearly 4 minutes to complete the deploy (1:30 of which was upgrading the dependencies) which is longer than the ~1:40 it takes for a regular deploy without an SST deps update).

First, update sst:

dmeehan@MacBook-Pro-M1 dashboard % brew upgrade sst
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Auto-updated Homebrew!
==> Updated Homebrew from 4.2.21 (d194ed1b4f) to 4.3.0 (f4a9869d27).
Updated 3 taps (sst/tap, homebrew/core and homebrew/cask).
==> New Formulae
go-size-analyzer                                                                                      rust-parallel
==> New Casks
chatgpt                                                             font-0xproto                                                        weasis

You have 97 outdated formulae and 1 outdated cask installed.

The 4.3.0 release notes are available on the Homebrew Blog:
  https://brew.sh/blog/4.3.0
==> Upgrading 1 outdated package:
sst/tap/sst 0.0.361 -> 0.0.368
==> Fetching sst/tap/sst
==> Downloading https://github.com/sst/ion/releases/download/v0.0.368/sst-mac-x86_64.tar.gz
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/718823646/563abc26-8421-46a0-96e4-7215fb63120e?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releasea
#################################################################################################################################################################################################### 100.0%
==> Upgrading sst/tap/sst
  0.0.361 -> 0.0.368 
🍺  /usr/local/Cellar/sst/0.0.368: 6 files, 52.3MB, built in 38 seconds
==> Running `brew cleanup sst`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /usr/local/Cellar/sst/0.0.361... (6 files, 53.4MB)
Removing: /Users/dmeehan/Library/Caches/Homebrew/sst--0.0.361.tar.gz... (20MB)

Run deploy with NO_BUN=true environment:

dmeehan@MacBook-Pro-M1 dashboard % NO_BUN=true sst deploy --verbose 
time=2024-05-14T19:21:20.259+01:00 level=INFO msg="checking for pulumi" path="/Users/dmeehan/Library/Application Support/sst/bin/pulumi"
time=2024-05-14T19:21:20.624+01:00 level=INFO msg="pulumi install"
time=2024-05-14T19:21:20.624+01:00 level=INFO msg="pulumi downloading" url=https://github.com/pulumi/pulumi/releases/download/v3.115.2/pulumi-v3.115.2-darwin-x64.tar.gz
⠧  Updating dependencies...time=2024-05-14T19:23:07.193+01:00 level=INFO msg="checking for bun" path="/Users/dmeehan/Library/Application Support/sst/bin/bun"
time=2024-05-14T19:23:07.239+01:00 level=INFO msg="initializing project" version=0.0.368
time=2024-05-14T19:23:07.240+01:00 level=INFO msg="esbuild building"
time=2024-05-14T19:23:07.314+01:00 level=INFO msg="esbuild built" outfile=/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/eval/eval-1715710987240.mjs
time=2024-05-14T19:23:07.314+01:00 level=INFO msg="evaluating config"
time=2024-05-14T19:23:07.924+01:00 level=INFO msg="config evaluated"
time=2024-05-14T19:23:07.928+01:00 level=INFO msg="checking platform"
⠋  Upgrading project...time=2024-05-14T19:23:07.929+01:00 level=INFO msg="installing platform"
⠋  Upgrading project...time=2024-05-14T19:23:10.995+01:00 level=INFO msg="installing deps"
time=2024-05-14T19:23:10.995+01:00 level=INFO msg="getting package" name=@sst-provider/aws version=latest
⠏  Installing providers...time=2024-05-14T19:23:12.936+01:00 level=INFO msg="getting package" name=@pulumi/aws version=latest
⠧  Installing providers...time=2024-05-14T19:23:13.725+01:00 level=INFO msg="writing package.json"
time=2024-05-14T19:23:13.730+01:00 level=INFO msg="adding dependency" name=aws
time=2024-05-14T19:23:13.732+01:00 level=INFO msg="fetching deps"
⠙  Installing providers...time=2024-05-14T19:24:45.915+01:00 level=INFO msg="writing types"
⠹  Installing providers...time=2024-05-14T19:24:45.923+01:00 level=INFO msg="credentials found"
time=2024-05-14T19:24:45.927+01:00 level=INFO msg="fetching bootstrap"
⠦  Installing providers...time=2024-05-14T19:24:46.366+01:00 level=INFO msg="found existing bootstrap" data="{\"version\":1,\"asset\":\"sst-asset-mkzfwnszeetx\",\"state\":\"sst-state-mkzfwnszeetx\"}"
time=2024-05-14T19:24:46.367+01:00 level=INFO msg="loaded config" app=replicated stage=dmeehan
SST ❍ ion 0.0.368  ready!

➜  App:        replicated
   Stage:      dmeehan

time=2024-05-14T19:24:46.368+01:00 level=INFO msg="running stack command" cmd=up
~  Deploying

time=2024-05-14T19:24:46.369+01:00 level=INFO msg="INFO locking app=replicated stage=dmeehan"
time=2024-05-14T19:24:46.369+01:00 level=INFO msg="INFO getting data key=lock app=replicated stage=dmeehan"
time=2024-05-14T19:24:46.703+01:00 level=INFO msg="INFO putting data key=lock app=replicated stage=dmeehan"
time=2024-05-14T19:24:46.972+01:00 level=INFO msg="INFO pulling state app=replicated stage=dmeehan out=/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/.pulumi/stacks/replicated/dmeehan.json"
time=2024-05-14T19:24:47.579+01:00 level=INFO msg="INFO getting passphrase app=replicated stage=dmeehan"
time=2024-05-14T19:24:47.900+01:00 level=INFO msg="INFO getting data key=secret app=replicated stage=dmeehan"
time=2024-05-14T19:24:48.161+01:00 level=INFO msg="esbuild building"
time=2024-05-14T19:24:48.295+01:00 level=INFO msg="esbuild built" outfile=/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/eval/eval-1715711088161.mjs
time=2024-05-14T19:24:48.295+01:00 level=INFO msg="tracked files"
time=2024-05-14T19:24:52.816+01:00 level=INFO msg="built workspace"
time=2024-05-14T19:24:53.057+01:00 level=INFO msg="built stack"
time=2024-05-14T19:24:53.298+01:00 level=INFO msg="built config"
time=2024-05-14T19:24:53.299+01:00 level=INFO msg="running stack command" cmd=up
Running "npx --yes open-next@3.0.0-rc.16 build" script
Next.js v14.2.3
OpenNext v3.0.0-rc.16
┌─────────────────────────────────┐
│ OpenNext — Building Next.js app │
└─────────────────────────────────┘
> dashboard@0.1.0 build
> next build
  ▲ Next.js 14.2.3
   Creating an optimized production build ...
🌼   daisyUI 4.11.1
├─ ✔︎ 2 themes added            https://daisyui.com/docs/themes
╰─ ❤︎ Support daisyUI project:  https://opencollective.com/daisyui
 ✓ Compiled successfully
   Linting and checking validity of types ...
   Collecting page data ...
   Generating static pages (0/9) ...
   Generating static pages (2/9) 
   Generating static pages (4/9) 
   Generating static pages (6/9) 
 ✓ Generating static pages (9/9)
   Finalizing page optimization ...
   Collecting build traces ...
Route (app)                              Size     First Load JS
┌ ○ /                                    149 kB          236 kB
├ ○ /_not-found                          875 B          87.9 kB
├ ƒ /api/advert/count-by-interval        0 B                0 B
├ ƒ /api/advert/count-by-status          0 B                0 B
├ ƒ /api/advert/performance-by-week      0 B                0 B
└ ƒ /api/advert/price-band-by-date       0 B                0 B
+ First Load JS shared by all            87 kB
  ├ chunks/23-5c7f4381c4456f75.js        31.5 kB
  ├ chunks/fd9d1056-3b7d9eb91ddf012e.js  53.7 kB
  └ other shared chunks (total)          1.92 kB
○  (Static)   prerendered as static content
ƒ  (Dynamic)  server-rendered on demand
┌──────────────────────────────┐
│ OpenNext — Generating bundle │
└──────────────────────────────┘
Bundling middleware function...
Bundling static assets...
Bundling cache assets...
Building server function: default...
Bundling revalidation function...
Bundling image optimization function...
Bundling warmer function...
OpenNext build complete.
|  Info        Downloading provider: aws
|  Updating    Dashboard sst:aws:Nextjs → DashboardOriginAccessIdentity sst:aws:OriginAccessIdentity
|  Updated     Dashboard sst:aws:Nextjs → DashboardOriginAccessIdentity sst:aws:OriginAccessIdentity
|  Updating    Dashboard sst:aws:Nextjs → DashboardAssetFiles sst:aws:BucketFiles
|  Creating    DashboardRevalidationQueueSubscriberBbhdmk sst:aws:QueueLambdaSubscriber → DashboardRevalidationQueueSubscriberBbhdmkFunctionCode aws:s3:BucketObjectv2
|  Creating    Dashboard sst:aws:Nextjs → DashboardRevalidationSeederCode aws:s3:BucketObjectv2
|  Creating    Dashboard sst:aws:Nextjs → DashboardDefaultCode aws:s3:BucketObjectv2
|  Creating    Dashboard sst:aws:Nextjs → DashboardImageOptimizerCode aws:s3:BucketObjectv2
|  Created     Dashboard sst:aws:Nextjs → DashboardRevalidationSeederCode aws:s3:BucketObjectv2 (5.5s)
|  Creating    Dashboard sst:aws:Nextjs → DashboardRevalidationSeederCode aws:s3:BucketObjectv2
|  Created     Dashboard sst:aws:Nextjs → DashboardRevalidationSeederCode aws:s3:BucketObjectv2
|  Updating    Dashboard sst:aws:Nextjs → DashboardRevalidationSeederCodeUpdater sst:aws:FunctionCodeUpdater
|  Created     DashboardRevalidationQueueSubscriberBbhdmk sst:aws:QueueLambdaSubscriber → DashboardRevalidationQueueSubscriberBbhdmkFunctionCode aws:s3:BucketObjectv2 (5.7s)
|  Creating    DashboardRevalidationQueueSubscriberBbhdmk sst:aws:QueueLambdaSubscriber → DashboardRevalidationQueueSubscriberBbhdmkFunctionCode aws:s3:BucketObjectv2
|  Created     DashboardRevalidationQueueSubscriberBbhdmk sst:aws:QueueLambdaSubscriber → DashboardRevalidationQueueSubscriberBbhdmkFunctionCode aws:s3:BucketObjectv2
|  Updating    DashboardRevalidationQueueSubscriberBbhdmk sst:aws:QueueLambdaSubscriber → DashboardRevalidationQueueSubscriberBbhdmkFunctionCodeUpdater sst:aws:FunctionCodeUpdater
|  Updated     Dashboard sst:aws:Nextjs → DashboardRevalidationSeederCodeUpdater sst:aws:FunctionCodeUpdater (3.1s)
|  Creating    Dashboard sst:aws:Nextjs → DashboardRevalidationSeed aws:lambda:Invocation
|  Updated     DashboardRevalidationQueueSubscriberBbhdmk sst:aws:QueueLambdaSubscriber → DashboardRevalidationQueueSubscriberBbhdmkFunctionCodeUpdater sst:aws:FunctionCodeUpdater (2.9s)
|  Updated     Dashboard sst:aws:Nextjs → DashboardAssetFiles sst:aws:BucketFiles (11.6s)
|  Updating    Dashboard sst:aws:Nextjs → DashboardCdnWaiter sst:aws:DistributionDeploymentWaiter
|  Updating    Dashboard sst:aws:Nextjs → DashboardInvalidation sst:aws:DistributionInvalidation
|  Created     Dashboard sst:aws:Nextjs → DashboardRevalidationSeed aws:lambda:Invocation (2.6s)
|  Creating    Dashboard sst:aws:Nextjs → DashboardRevalidationSeed aws:lambda:Invocation
|  Created     Dashboard sst:aws:Nextjs → DashboardRevalidationSeed aws:lambda:Invocation
|  Updated     Dashboard sst:aws:Nextjs → DashboardInvalidation sst:aws:DistributionInvalidation (2.1s)
|  Updated     Dashboard sst:aws:Nextjs → DashboardCdnWaiter sst:aws:DistributionDeploymentWaiter (2.2s)
|  Created     Dashboard sst:aws:Nextjs → DashboardDefaultCode aws:s3:BucketObjectv2 (35.4s)
|  Creating    Dashboard sst:aws:Nextjs → DashboardDefaultCode aws:s3:BucketObjectv2
|  Created     Dashboard sst:aws:Nextjs → DashboardDefaultCode aws:s3:BucketObjectv2
|  Updating    Dashboard sst:aws:Nextjs → DashboardDefaultCodeUpdater sst:aws:FunctionCodeUpdater
|  Updated     Dashboard sst:aws:Nextjs → DashboardDefaultCodeUpdater sst:aws:FunctionCodeUpdater (1.8s)
|  Created     Dashboard sst:aws:Nextjs → DashboardImageOptimizerCode aws:s3:BucketObjectv2 (37.1s)
|  Creating    Dashboard sst:aws:Nextjs → DashboardImageOptimizerCode aws:s3:BucketObjectv2
|  Created     Dashboard sst:aws:Nextjs → DashboardImageOptimizerCode aws:s3:BucketObjectv2
|  Updating    Dashboard sst:aws:Nextjs → DashboardImageOptimizerCodeUpdater sst:aws:FunctionCodeUpdater
|  Updated     Dashboard sst:aws:Nextjs → DashboardImageOptimizerCodeUpdater sst:aws:FunctionCodeUpdater (2.2s)
|  Deleting    Dashboard sst:aws:Nextjs → DashboardRevalidationSeed aws:lambda:Invocation
|  Deleting    Dashboard sst:aws:Nextjs → DashboardRevalidationSeederCode aws:s3:BucketObjectv2
|  Deleting    Dashboard sst:aws:Nextjs → DashboardImageOptimizerCode aws:s3:BucketObjectv2
|  Deleting    DashboardRevalidationQueueSubscriberBbhdmk sst:aws:QueueLambdaSubscriber → DashboardRevalidationQueueSubscriberBbhdmkFunctionCode aws:s3:BucketObjectv2
|  Deleting    Dashboard sst:aws:Nextjs → DashboardDefaultCode aws:s3:BucketObjectv2
|  Deleted     Dashboard sst:aws:Nextjs → DashboardRevalidationSeederCode aws:s3:BucketObjectv2
|  Deleted     Dashboard sst:aws:Nextjs → DashboardImageOptimizerCode aws:s3:BucketObjectv2
|  Deleted     DashboardRevalidationQueueSubscriberBbhdmk sst:aws:QueueLambdaSubscriber → DashboardRevalidationQueueSubscriberBbhdmkFunctionCode aws:s3:BucketObjectv2
|  Deleted     Dashboard sst:aws:Nextjs → DashboardDefaultCode aws:s3:BucketObjectv2
|  Deleted     Dashboard sst:aws:Nextjs → DashboardRevalidationSeed aws:lambda:Invocation
⠹  Finalizing...time=2024-05-14T19:29:04.616+01:00 level=INFO msg="done running stack command"
time=2024-05-14T19:29:04.616+01:00 level=INFO msg="stack command complete"
⠏  Finalizing...time=2024-05-14T19:29:05.361+01:00 level=INFO msg="generating types" path=/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/types.generated.ts count=0
time=2024-05-14T19:29:05.363+01:00 level=INFO msg="INFO putting links app=replicated stage=dmeehan"
time=2024-05-14T19:29:05.363+01:00 level=INFO msg="INFO putting data key=link app=replicated stage=dmeehan"
time=2024-05-14T19:29:05.363+01:00 level=INFO msg="INFO getting passphrase app=replicated stage=dmeehan"

✓  Complete
   Dashboard: https://<REDACTED>.cloudfront.net

time=2024-05-14T19:29:06.177+01:00 level=INFO msg="INFO pushing state app=replicated stage=dmeehan from=/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/.pulumi/stacks/replicated/dmeehan.json"
time=2024-05-14T19:29:09.276+01:00 level=INFO msg="INFO unlocking app=replicated stage=dmeehan"
dmeehan@MacBook-Pro-M1 dashboard % 
dmeehan1968 commented 2 months ago

This is reproducable by deleting the .sst directory and running sst install the first time after clearing. The project previously existed, but clearing the .sst directory seems to provoke the same issue as an upgrade. Any subsequent call will succeed, but with sst install --verbose the last line of output is:

time=2024-07-16T21:40:20.863+01:00 level=INFO msg="fetching deps"
time=2024-07-16T21:40:22.365+01:00 level=ERROR msg="exited with error" err="failed to run bun install bun install v1.1.0 (5903a614)\n/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/node_modules/vite/node_modules/esbuild/install.js:133\n    throw new Error(`Expected ${JSON.stringify(versionFromPackageJSON)} but got ${JSON.stringify(stdout)}`);\n          ^\n\nError: Expected \"0.19.10\" but got \"0.20.2\"\n    at validateBinaryVersion (/Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/node_modules/vite/node_modules/esbuild/install.js:133:11)\n    at /Users/dmeehan/Library/CloudStorage/Dropbox/Projects/Amazon/Replicated/.sst/platform/node_modules/vite/node_modules/esbuild/install.js:286:5\n\nNode.js v20.15.1\n\nerror: postinstall script from \"esbuild\" exited with 1\n"

This seems to be refering to the version of esbuild, but I don't have one specified in the project (and still does the same if I install the specified version). However, .sst/platform/package.json does specify 0.20.2, so it seems that's in part where the problem stems from. I DO have 0.20.2 in the containing project (I have my sst project in a subdirectory of a CDK project), but even if I downgrade this and run sst install again (having cleared .sst) the problem still persists. I don't have esbuild install globally.

One a second and subsequent command, the esbuild version stays the same but seems to be accepted, and the command completes successfully.

jayair commented 2 months ago

@thdxr