open-next icon indicating copy to clipboard operation
open-next copied to clipboard

Package generation fails in Ubuntu using Node.js v18

Open andylamp opened this issue 7 months ago • 1 comments

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": "[email protected]"
}

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....

andylamp avatar Nov 11 '23 17:11 andylamp