sst / ion

❍ — a new engine for SST
https://ion.sst.dev
MIT License
1.12k stars 136 forks source link

Unable to Deploy Vanilla NextJS template with SST v0.0.300 #297

Closed Sunit-Kulkarni closed 2 months ago

Sunit-Kulkarni commented 2 months ago

I have initialized a new NextJS project and used bun as it's package manager on SST v0.0.300. I am unable to deploy to AWS due to logs below:

SST ❍ ion 0.0.300  ready!

➜  App:        next-ion
   Stage:      sunitkulkarni

~  Deploying

Running "npx --yes open-next@3.0.0-rc.11 build" script
Next.js v14.2.2
OpenNext v3.0.0-rc.11
┌─────────────────────────────────┐
│ OpenNext — Building Next.js app │
└─────────────────────────────────┘
$ next build
  ▲ Next.js 14.2.2
   Creating an optimized production build ...
 ✓ Compiled successfully
   Linting and checking validity of types ...
   Collecting page data ...
   Generating static pages (0/5) ...
   Generating static pages (1/5)
   Generating static pages (2/5)
   Generating static pages (3/5)
 ✓ Generating static pages (5/5)
   Finalizing page optimization ...
   Collecting build traces ...
Route (app)                              Size     First Load JS
┌ ○ /                                    5.46 kB        92.4 kB
└ ○ /_not-found                          871 B          87.8 kB
+ First Load JS shared by all            86.9 kB
  ├ chunks/23-b6b066db8b1efede.js        31.4 kB
  ├ chunks/fd9d1056-2821b0f0cabcd8bd.js  53.6 kB
  └ other shared chunks (total)          1.87 kB
○  (Static)  prerendered as static content
┌──────────────────────────────┐
│ OpenNext — Generating bundle │
└──────────────────────────────┘
Bundling middleware function...
Bundling static assets...
Bundling cache assets...
Building server function: default...
file:///Users/sunitkulkarni/.npm/_npx/fca52857513d989a/node_modules/open-next/dist/build/copyTracedFiles.js:45
            throw new Error(`
                  ^
Error:
--------------------------------------------------------------------------------
app/_not-found cannot use the edge runtime.
OpenNext requires edge runtime function to be defined in a separate function.
See the docs for more information on how to bundle edge runtime functions.
--------------------------------------------------------------------------------
    at computeCopyFilesForPage (file:///Users/sunitkulkarni/.npm/_npx/fca52857513d989a/node_modules/open-next/dist/build/copyTracedFiles.js:45:19)
    at copyTracedFiles (file:///Users/sunitkulkarni/.npm/_npx/fca52857513d989a/node_modules/open-next/dist/build/copyTracedFiles.js:73:9)
    at generateBundle (file:///Users/sunitkulkarni/.npm/_npx/fca52857513d989a/node_modules/open-next/dist/build/createServerBundle.js:99:5)
    at createServerBundle (file:///Users/sunitkulkarni/.npm/_npx/fca52857513d989a/node_modules/open-next/dist/build/createServerBundle.js:66:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async build (file:///Users/sunitkulkarni/.npm/_npx/fca52857513d989a/node_modules/open-next/dist/build.js:49:5)
Node.js v21.7.1
(node:37032) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
|  Creating    Ion sst:aws:Nextjs
(node:37032) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 28)
(node:37032) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 29)
|  Error        There was a problem building "Ion".
|  Creating    Ion sst:aws:Nextjs → IonAssets sst:aws:Bucket
|  Created     Ion sst:aws:Nextjs → IonAssets sst:aws:Bucket
|  Creating    Ion sst:aws:Nextjs → IonOriginAccessIdentity sst:aws:OriginAccessIdentity
|  Creating    Ion sst:aws:Nextjs → IonAssetsId random:index:RandomId
|  Created     Ion sst:aws:Nextjs → IonAssetsId random:index:RandomId
|  Creating    Ion sst:aws:Nextjs → IonAssetsBucket aws:s3:BucketV2
|  Created     Ion sst:aws:Nextjs → IonOriginAccessIdentity sst:aws:OriginAccessIdentity
|  Created     Ion sst:aws:Nextjs → IonAssetsBucket aws:s3:BucketV2
|  Creating    Ion sst:aws:Nextjs → IonAssetsPublicAccessBlock aws:s3:BucketPublicAccessBlock
|  Creating    Ion sst:aws:Nextjs → IonAssetsCors aws:s3:BucketCorsConfigurationV2
|  Created     Ion sst:aws:Nextjs → IonAssetsPublicAccessBlock aws:s3:BucketPublicAccessBlock
|  Creating    Ion sst:aws:Nextjs → IonAssetsPolicy aws:s3:BucketPolicy
|  Created     Ion sst:aws:Nextjs → IonAssetsPolicy aws:s3:BucketPolicy (8.5s)
|  Created     Ion sst:aws:Nextjs → IonAssetsCors aws:s3:BucketCorsConfigurationV2 (15.9s)

×  Failed
   There was a problem building "Ion".
Trudgedy commented 2 months ago

Im getting the same problem with next.js v14.2.2, downgrading to 14.1.4 helped me, hopefully openNext will patch this issue soon

Sunit-Kulkarni commented 2 months ago

Looks like updating to the latest version of SST v0.0.324 with a fresh repo utilizing NextJS v14.2.3 did the trick! See logs below:

SST ❍ ion 0.0.324  ready!

➜  App:        next-ion
   Stage:      sunitkulkarni

~  Deploying

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 │
└─────────────────────────────────┘
$ next build
  ▲ Next.js 14.2.3
   Creating an optimized production build ...
(node:30850) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:30878) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
 ✓ Compiled successfully
   Linting and checking validity of types ...
   Collecting page data ...
   Generating static pages (0/5) ...
   Generating static pages (1/5)
   Generating static pages (2/5)
   Generating static pages (3/5)
 ✓ Generating static pages (5/5)
   Finalizing page optimization ...
   Collecting build traces ...
Route (app)                              Size     First Load JS
┌ ○ /                                    5.46 kB        92.4 kB
└ ○ /_not-found                          871 B          87.8 kB
+ First Load JS shared by all            87 kB
  ├ chunks/23-0627c91053ca9399.js        31.5 kB
  ├ chunks/fd9d1056-2821b0f0cabcd8bd.js  53.6 kB
  └ other shared chunks (total)          1.87 kB
○  (Static)  prerendered as static content
┌──────────────────────────────┐
│ 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.
(node:30732) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
|  Creating    MyIon sst:aws:Nextjs
|  Creating    MyIon sst:aws:Nextjs → MyIonAssets sst:aws:Bucket
|  Created     MyIon sst:aws:Nextjs → MyIonAssets sst:aws:Bucket
|  Creating    MyIon sst:aws:Nextjs → MyIonOriginAccessIdentity sst:aws:OriginAccessIdentity
|  Creating    MyIon sst:aws:Nextjs → MyIonOpenNextOutput sst:aws:Cache
|  Creating    MyIon sst:aws:Nextjs → MyIonAssetsId random:index:RandomId
|  Created     MyIon sst:aws:Nextjs → MyIonAssetsId random:index:RandomId
|  Creating    MyIon sst:aws:Nextjs → MyIonAssetsBucket aws:s3:BucketV2
|  Created     MyIon sst:aws:Nextjs → MyIonOpenNextOutput sst:aws:Cache
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationSeeder sst:aws:Function
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationQueue sst:aws:Queue
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationTable aws:dynamodb:Table
|  Created     MyIon sst:aws:Nextjs → MyIonOriginAccessIdentity sst:aws:OriginAccessIdentity
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationSeeder sst:aws:Function
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationQueue sst:aws:Queue
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationSeederLogGroup aws:cloudwatch:LogGroup
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationQueueQueue aws:sqs:Queue
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationSeederLogGroup aws:cloudwatch:LogGroup
|  Created     MyIon sst:aws:Nextjs → MyIonAssetsBucket aws:s3:BucketV2
|  Creating    MyIon sst:aws:Nextjs → MyIonAssetsCors aws:s3:BucketCorsConfigurationV2
|  Creating    MyIon sst:aws:Nextjs → MyIonAssetsPublicAccessBlock aws:s3:BucketPublicAccessBlock
|  Created     MyIon sst:aws:Nextjs → MyIonAssetsCors aws:s3:BucketCorsConfigurationV2
|  Created     MyIon sst:aws:Nextjs → MyIonAssetsPublicAccessBlock aws:s3:BucketPublicAccessBlock
|  Creating    MyIon sst:aws:Nextjs → MyIonAssetsPolicy aws:s3:BucketPolicy
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationSeederCode aws:s3:BucketObjectv2
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationSeederCode aws:s3:BucketObjectv2
|  Created     MyIon sst:aws:Nextjs → MyIonAssetsPolicy aws:s3:BucketPolicy (8.4s)
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationTable aws:dynamodb:Table (23.1s)
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationSeederRole aws:iam:Role
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationSeederRole aws:iam:Role
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationSeederFunction aws:lambda:Function
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationQueueQueue aws:sqs:Queue (25.2s)
|  Creating    MyIonRevalidationQueueSubscriberUeff sst:aws:Function
|  Creating    MyIon sst:aws:Nextjs → MyIonDefault sst:aws:Function
|  Creating    MyIon sst:aws:Nextjs → MyIonImageOptimizer sst:aws:Function
|  Creating    MyIon sst:aws:Nextjs → MyIonCloudfrontFunctionServerCfFunction aws:cloudfront:Function
|  Creating    MyIon sst:aws:Nextjs → MyIonServerCachePolicy aws:cloudfront:CachePolicy
|  Created     MyIon sst:aws:Nextjs → MyIonServerCachePolicy aws:cloudfront:CachePolicy
|  Creating    AwsProvider sst:us-east-1
|  Creating    MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffLogGroup aws:cloudwatch:LogGroup
|  Creating    MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffRole aws:iam:Role
|  Creating    MyIon sst:aws:Nextjs → MyIonDefaultLogGroup aws:cloudwatch:LogGroup
|  Creating    MyIon sst:aws:Nextjs → MyIonDefaultRole aws:iam:Role
|  Creating    MyIon sst:aws:Nextjs → MyIonImageOptimizerLogGroup aws:cloudwatch:LogGroup
|  Creating    MyIon sst:aws:Nextjs → MyIonImageOptimizerRole aws:iam:Role
|  Created     AwsProvider sst:us-east-1
|  Created     MyIon sst:aws:Nextjs → MyIonDefaultLogGroup aws:cloudwatch:LogGroup
|  Created     MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffLogGroup aws:cloudwatch:LogGroup
|  Creating    MyIon sst:aws:Nextjs → MyIonAssetFiles sst:aws:BucketFiles
|  Created     MyIon sst:aws:Nextjs → MyIonImageOptimizer sst:aws:Function (1.6s)
|  Creating    MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffCode aws:s3:BucketObjectv2
|  Created     MyIon sst:aws:Nextjs → MyIonImageOptimizerLogGroup aws:cloudwatch:LogGroup
|  Created     MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffRole aws:iam:Role
|  Created     MyIonRevalidationQueueSubscriberUeff sst:aws:Function (1.8s)
|  Creating    MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffFunction aws:lambda:Function
|  Created     MyIon sst:aws:Nextjs → MyIonDefaultRole aws:iam:Role
|  Created     MyIon sst:aws:Nextjs → MyIonImageOptimizerRole aws:iam:Role
|  Created     MyIon sst:aws:Nextjs → MyIonDefault sst:aws:Function (1.9s)
|  Creating    MyIon sst:aws:Nextjs → MyIonDefaultFunction aws:lambda:Function
|  Creating    MyIon sst:aws:Nextjs → MyIonImageOptimizerFunction aws:lambda:Function
|  Created     MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffCode aws:s3:BucketObjectv2
|  Created     MyIon sst:aws:Nextjs → MyIonAssetFiles sst:aws:BucketFiles
|  Creating    MyIon sst:aws:Nextjs → MyIonCdn sst:aws:CDN
|  Created     MyIon sst:aws:Nextjs → MyIonCdn sst:aws:CDN
|  Creating    MyIon sst:aws:Nextjs → MyIonCdnSsl sst:aws:Certificate
|  Creating    MyIon sst:aws:Nextjs → MyIonDefaultCode aws:s3:BucketObjectv2
|  Created     MyIon sst:aws:Nextjs → MyIonCdnSsl sst:aws:Certificate
|  Creating    MyIon sst:aws:Nextjs → MyIonCdnSslCertificate aws:acm:Certificate
|  Creating    MyIon sst:aws:Nextjs → MyIonImageOptimizerCode aws:s3:BucketObjectv2
|  Created     MyIon sst:aws:Nextjs → MyIonDefaultCode aws:s3:BucketObjectv2
|  Created     MyIon sst:aws:Nextjs → MyIonCloudfrontFunctionServerCfFunction aws:cloudfront:Function (2.9s)
|  Created     MyIon sst:aws:Nextjs → MyIonImageOptimizerCode aws:s3:BucketObjectv2
|  Created     MyIon sst:aws:Nextjs → MyIonCdnSslCertificate aws:acm:Certificate (5.7s)
|  Creating    MyIon sst:aws:Nextjs → MyIonCdnSslCNAMERecord4d26e852cf177dbb8fce31346a85ce1aiondevqleoai aws:route53:Record
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationSeederFunction aws:lambda:Function (13.6s)
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationSeederCodeUpdater sst:aws:FunctionCodeUpdater
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationSeederCodeUpdater sst:aws:FunctionCodeUpdater (1.5s)
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationSeed aws:lambda:Invocation
|  Created     MyIon sst:aws:Nextjs → MyIonRevalidationSeed aws:lambda:Invocation (1.6s)
|  Created     MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffFunction aws:lambda:Function (14.5s)
|  Creating    MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffCodeUpdater sst:aws:FunctionCodeUpdater
|  Created     MyIonRevalidationQueueSubscriberUeff sst:aws:Function → MyIonRevalidationQueueSubscriberUeffCodeUpdater sst:aws:FunctionCodeUpdater (1.4s)
|  Creating    MyIonRevalidationQueueEventSourceMappingUeff aws:lambda:EventSourceMapping
|  Created     MyIon sst:aws:Nextjs → MyIonDefaultFunction aws:lambda:Function (20.1s)
|  Creating    MyIon sst:aws:Nextjs → MyIonDefaultCodeUpdater sst:aws:FunctionCodeUpdater
|  Creating    MyIon sst:aws:Nextjs → MyIonDefaultUrl aws:lambda:FunctionUrl
|  Created     MyIon sst:aws:Nextjs → MyIonDefaultUrl aws:lambda:FunctionUrl
|  Created     MyIon sst:aws:Nextjs → MyIonDefaultCodeUpdater sst:aws:FunctionCodeUpdater (1.6s)
|  Created     MyIonRevalidationQueueEventSourceMappingUeff aws:lambda:EventSourceMapping (7.4s)
|  Created     MyIon sst:aws:Nextjs → MyIonImageOptimizerFunction aws:lambda:Function (25.8s)
|  Creating    MyIon sst:aws:Nextjs → MyIonImageOptimizerCodeUpdater sst:aws:FunctionCodeUpdater
|  Creating    MyIon sst:aws:Nextjs → MyIonImageOptimizerUrl aws:lambda:FunctionUrl
|  Created     MyIon sst:aws:Nextjs → MyIonImageOptimizerUrl aws:lambda:FunctionUrl
|  Created     MyIon sst:aws:Nextjs → MyIonImageOptimizerCodeUpdater sst:aws:FunctionCodeUpdater (1.7s)
|  Created     MyIon sst:aws:Nextjs → MyIonCdnSslCNAMERecord4d26e852cf177dbb8fce31346a85ce1aiondevqleoai aws:route53:Record (48.5s)
|  Creating    MyIon sst:aws:Nextjs → MyIonCdnSslValidation aws:acm:CertificateValidation
|  Created     MyIon sst:aws:Nextjs → MyIonCdnSslValidation aws:acm:CertificateValidation
|  Creating    MyIon sst:aws:Nextjs → MyIonCdnDistribution aws:cloudfront:Distribution
|  Created     MyIon sst:aws:Nextjs → MyIonCdnDistribution aws:cloudfront:Distribution (1.8s)
|  Creating    MyIon sst:aws:Nextjs → MyIonCdnWaiter sst:aws:DistributionDeploymentWaiter
|  Creating    MyIon sst:aws:Nextjs → MyIonInvalidationPolicy aws:iam:Policy
|  Creating    MyIon sst:aws:Nextjs → MyIonCdnARecordIondevqleoai aws:route53:Record
|  Creating    MyIon sst:aws:Nextjs → MyIonCdnAAAARecordIondevqleoai aws:route53:Record
|  Creating    MyIon sst:aws:Nextjs → MyIonInvalidation sst:aws:DistributionInvalidation
|  Created     MyIon sst:aws:Nextjs (101.7s)
|  Created     MyIon sst:aws:Nextjs → MyIonInvalidation sst:aws:DistributionInvalidation
|  Created     MyIon sst:aws:Nextjs → MyIonInvalidationPolicy aws:iam:Policy
|  Creating    MyIon sst:aws:Nextjs → MyIonInvalidationPolicyAttachment414f aws:iam:RolePolicyAttachment
|  Created     MyIon sst:aws:Nextjs → MyIonInvalidationPolicyAttachment414f aws:iam:RolePolicyAttachment
⠋  Deploying...(Use `node --trace-deprecation ...` to show where the warning was created)
|  Creating    MyIon sst:aws:Nextjs
|  Creating    MyIon sst:aws:Nextjs → MyIonAssets sst:aws:Bucket
|  Created     MyIon sst:aws:Nextjs → MyIonAssets sst:aws:Bucket
|  Creating    MyIon sst:aws:Nextjs → MyIonOriginAccessIdentity sst:aws:OriginAccessIdentity
|  Creating    MyIon sst:aws:Nextjs → MyIonOpenNextOutput sst:aws:Cache
|  Creating    MyIon sst:aws:Nextjs → MyIonAssetsId random:index:RandomId
|  Created     MyIon sst:aws:Nextjs → MyIonAssetsId random:index:RandomId
|  Creating    MyIon sst:aws:Nextjs → MyIonAssetsBucket aws:s3:BucketV2
|  Created     MyIon sst:aws:Nextjs → MyIonOpenNextOutput sst:aws:Cache
⠙  Deploying...Function
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationQueue sst:aws:Queue
|  Creating    MyIon sst:aws:Nextjs → MyIonRevalidationTable aws:dynamodb:Table
|  Created     MyIon sst:aws:Nextjs → MyIonCdnAAAARecordIondevqleoai aws:route53:Record (42.6s)
|  Created     MyIon sst:aws:Nextjs → MyIonCdnARecordIondevqleoai aws:route53:Record (50.7s)
|  Created     MyIon sst:aws:Nextjs → MyIonCdnWaiter sst:aws:DistributionDeploymentWaiter (200.5s)

✓  Complete
   MyIon: https://ion.dev.qleo.ai
   ---
   url: https://ion.dev.qleo.ai
fwang commented 2 months ago

@Sunit-Kulkarni Thanks for confirming!

@Trudgedy Feel free to reopen the issue if this still happens on v0.0.324.