opennextjs / opennextjs-aws

Open-source Next.js adapter for AWS
https://open-next.js.org
MIT License
3.91k stars 119 forks source link

Package generation fails in Ubuntu using Node.js v18 #315

Open andylamp opened 10 months ago

andylamp commented 10 months ago

The issue I am having is quite peculiar, in certain Ubuntu installations open-next package fails to compile with the following bizarre error during the server function generation,

┌──────────────────────────────┐
│ OpenNext — Generating bundle │
└──────────────────────────────┘

Bundling static assets...
Bundling cache assets...
Bundling server function...
✘ [ERROR] Could not resolve "@aws-sdk/client-dynamodb"

    node_modules/open-next/dist/adapters/server-adapter.js:2:31:
      2 │ import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
        ╵                                ~~~~~~~~~~~~~~~~~~~~~~~~~~

  The Yarn Plug'n'Play manifest forbids importing "@aws-sdk/client-dynamodb" here because it's not
  listed as a dependency of this package:

    ../../.pnp.cjs:86:31:
      86 │         "packageDependencies": [\
         ╵                                ~~

  You can mark the path "@aws-sdk/client-dynamodb" as external to exclude it from the bundle, which
  will remove this error.

✘ [ERROR] Could not resolve "@aws-sdk/client-s3"

    node_modules/open-next/dist/adapters/server-adapter.js:3:25:
      3 │ import { S3Client } from "@aws-sdk/client-s3";
        ╵                          ~~~~~~~~~~~~~~~~~~~~

  The Yarn Plug'n'Play manifest forbids importing "@aws-sdk/client-s3" here because it's not listed
  as a dependency of this package:

    ../../.pnp.cjs:86:31:
      86 │         "packageDependencies": [\
         ╵                                ~~

  You can mark the path "@aws-sdk/client-s3" as external to exclude it from the bundle, which will
  remove this error.

✘ [ERROR] Could not resolve "@aws-sdk/client-sqs"

    node_modules/open-next/dist/adapters/plugins/routing/util.js:1:46:
      1 │ import { SendMessageCommand, SQSClient } from "@aws-sdk/client-sqs";
        ╵                                               ~~~~~~~~~~~~~~~~~~~~~

  The Yarn Plug'n'Play manifest forbids importing "@aws-sdk/client-sqs" here because it's not listed
  as a dependency of this package:

    ../../.pnp.cjs:86:31:
      86 │         "packageDependencies": [\
         ╵                                ~~

  You can mark the path "@aws-sdk/client-sqs" as external to exclude it from the bundle, which will
  remove this error.

/home/myuser/open-next-project/node_modules/esbuild/lib/main.js:1649
  let error = new Error(text);
              ^

Error: Build failed with 3 errors:
node_modules/open-next/dist/adapters/plugins/routing/util.js:1:46: ERROR: Could not resolve "@aws-sdk/client-sqs"
node_modules/open-next/dist/adapters/server-adapter.js:2:31: ERROR: Could not resolve "@aws-sdk/client-dynamodb"
node_modules/open-next/dist/adapters/server-adapter.js:3:25: ERROR: Could not resolve "@aws-sdk/client-s3"
    at failureErrorWithLog (/home/myuser/open-next-project/node_modules/esbuild/lib/main.js:1649:15)
    at /home/myuser/open-next-project/node_modules/esbuild/lib/main.js:1058:25
    at /home/myuser/open-next-project/node_modules/esbuild/lib/main.js:1003:52
    at buildResponseToResult (/home/myuser/open-next-project/node_modules/esbuild/lib/main.js:1056:7)
    at /home/myuser/open-next-project/node_modules/esbuild/lib/main.js:1085:16
    at responseCallbacks.<computed> (/home/myuser/open-next-project/node_modules/esbuild/lib/main.js:703:9)
    at handleIncomingPacket (/home/myuser/open-next-project/node_modules/esbuild/lib/main.js:762:9)
    at Socket.readFromStdout (/home/myuser/open-next-project/node_modules/esbuild/lib/main.js:679:7)
    at Socket.emit (node:events:517:28)
    at addChunk (node:internal/streams/readable:335:12) {
  errors: [Getter/Setter],
  warnings: [Getter/Setter]
}

Node.js v18.18.2

Package.json is as follows,

{
  "name": "open-next-project",
  "version": "1.5.12",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "package": "open-next build",
    "start": "next start",
    "analyze": "ANALYZE=true yarn build",
    "test": "jest --watch",
    "test:ci": "jest --ci",
    "type-check": "tsc --noEmit",
    "lint:eslint": "next lint --max-warnings=0",
    "lint:prettier": "prettier --ignore-unknown -w --check src/",
    "deploy": "serverless",
    "deploy-storybook-to": "aws s3 sync storybook-static/",
    "storybook": "start-storybook -p 6006 -s ./public",
    "build-storybook": "build-storybook -s ./public",
    "bump": "node bump.mjs"
  },
  "dependencies": {
    "@apollo/client": "^3.5.10",
    "@auth0/auth0-spa-js": "^2.1.2",
    "@babel/runtime": "^7.18.3",
    "@metamask/onboarding": "^1.0.1",
    "@picmo/popup-picker": "^5.7.2",
    "@segment/snippet": "^4.15.3",
    "@sentry/nextjs": "^7.56.0",
    "@stripe/stripe-js": "^1.35.0",
    "@types/lodash-es": "^4.17.6",
    "@walletconnect/client": "^1.7.7",
    "@walletconnect/qrcode-modal": "^1.7.7",
    "@walletconnect/web3-provider": "^1.7.7",
    "a11y-react-emoji": "^1.2.0",
    "alchemy-sdk": "^2.2.0",
    "axios": "^1.3.4",
    "axios-retry": "^3.4.0",
    "color": "^4.2.3",
    "d3": "3",
    "d3v7": "npm:d3@7",
    "date-fns": "^2.28.0",
    "dayjs": "^1.11.0",
    "dompurify": "^3.0.1",
    "formik": "^2.2.9",
    "graphql": "^16.3.0",
    "humps": "^2.0.1",
    "immutability-helper": "^3.1.1",
    "is-github-url": "^1.2.2",
    "lodash-es": "^4.17.21",
    "lottie-react": "^2.4.0",
    "mathjs": "^10.6.1",
    "next": "12.3.2",
    "notificationapi-js-client-sdk": "^4.3.1",
    "numeral": "^2.0.6",
    "open-next": "^2.3.1",
    "parse-github-url": "^1.0.2",
    "picmo": "^5.7.2",
    "react": "17.0.2",
    "react-color": "^2.19.3",
    "react-content-loader": "^6.2.0",
    "react-day-picker": "^8.0.5",
    "react-dnd": "^15.1.2",
    "react-dnd-html5-backend": "^16.0.1",
    "react-dnd-multi-backend": "^8.0.0",
    "react-dnd-touch-backend": "^16.0.1",
    "react-dom": "17.0.2",
    "react-flexbox-grid": "^2.1.2",
    "react-google-autocomplete": "^2.7.0",
    "react-icons": "^4.3.1",
    "react-infinite-scroll-hook": "^4.0.3",
    "react-scroll": "^1.8.6",
    "react-tippy": "^1.4.0",
    "react-toastify": "^9.0.5",
    "react-waypoint": "^10.1.0",
    "remark": "^14.0.2",
    "remark-emoji": "^3.0.2",
    "semantic-ui-css": "^2.4.1",
    "semantic-ui-react": "^2.1.2",
    "strip-markdown": "^5.0.0",
    "stripe": "^10.2.0",
    "styled-components": "^5.3.5",
    "swiper": "^9.1.1",
    "swr": "^2.1.3",
    "tinycolor2": "^1.4.2",
    "typesense": "^1.3.0",
    "ua-parser-js": "^1.0.35",
    "use-file-upload": "^1.0.11",
    "walletlink": "^2.5.0",
    "web3": "^1.8.1",
    "yup": "^0.32.11"
  },
  "devDependencies": {
    "@babel/core": "^7.17.9",
    "@next/bundle-analyzer": "^13.5.4",
    "@storybook/addon-actions": "^6.4.20",
    "@storybook/addon-essentials": "^6.4.20",
    "@storybook/addon-interactions": "^6.4.20",
    "@storybook/addon-links": "^6.4.20",
    "@storybook/builder-webpack5": "^6.4.20",
    "@storybook/manager-webpack5": "^6.4.20",
    "@storybook/react": "^6.4.20",
    "@svgr/webpack": "^6.2.1",
    "@types/auth0-js": "^9.14.6",
    "@types/dompurify": "^2.4.0",
    "@types/humps": "^2.0.2",
    "@types/is-github-url": "^1.2.0",
    "@types/jest": "^27.4.1",
    "@types/node": "17.0.23",
    "@types/numeral": "^2.0.2",
    "@types/parse-github-url": "^1.0.0",
    "@types/react": "17.0.43",
    "@types/segment-analytics": "^0.0.34",
    "@types/styled-components": "^5.1.24",
    "@types/ua-parser-js": "^0.7.36",
    "@typescript-eslint/eslint-plugin": "^5.27.0",
    "@typescript-eslint/parser": "^5.27.0",
    "babel-loader": "^8.2.4",
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.6",
    "enzyme-to-json": "^3.6.2",
    "eslint": "8.11.0",
    "eslint-config-next": "12.1.0",
    "husky": "4",
    "inquirer": "^9.1.4",
    "jest": "^27.5.1",
    "jest-styled-components": "^7.0.8",
    "lint-staged": "^12.3.7",
    "prettier": "^2.6.1",
    "serverless": "2.72.3",
    "storybook-addon-next": "^1.6.2",
    "typescript": "4.6.3",
    "webpack": "^5.76.0"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged && yarn type-check && yarn lint:eslint && yarn test:ci"
    }
  },
  "lint-staged": {
    "**/*": "prettier --write --ignore-unknown",
    "*.{js,css,md,jsx,tsx,ts}": "prettier --write"
  },
  "packageManager": "yarn@4.0.1"
}

In MacOS using the exact same config and commands it works. I have reinstalled everything, npm, Node.js, node_modules the usual stuff to no avail.

Does anyone have any idea why this fails to build? Happy to provide more info wrt to the project, in case that's needed....

ToanNguyen97 commented 5 months ago

Do guys have solution ? I got this issues too.

conico974 commented 1 day ago

This is an issue with yarn pnp. One easy fix would be to not use pnp If you need it, you may want to take a look at this https://github.com/evanw/esbuild/issues/2495#issuecomment-1227269139 or experiment with some of the pnp options