Skip to content

[Bug]: Runtime.ImportModuleError - Error: Cannot find module 'follow-redirects' when deploying with netlify-cli and pnpm #2323

Closed
@elliottsj

Description

@elliottsj

Summary

When using:

  • turbo@1.10.14
  • pnpm@8.9.0
  • @netlify/next-runtime@4.40.2
  • netlify-cli@16.6.1
  • next@13.5.4

A module import error Cannot find module 'follow-redirects' occurs when visiting the site.

A link to a reproduction repository

https://github.com/elliottsj/nextjs-netlify-follow-redirects-issue

https://nextjs-follow-redirects-docs.netlify.app/

Expected Result

No error

Actual Result

Runtime.ImportModuleError - Error: Cannot find module 'follow-redirects' Require stack: - /var/task/.netlify/functions-internal/___netlify-handler/handlerUtils.js - /var/task/.netlify/functions-internal/___netlify-handler/___netlify-handler.js - /var/task/___netlify-handler.js - /var/runtime/index.mjs

Steps to reproduce

Visit https://github.com/elliottsj/nextjs-netlify-follow-redirects-issue and follow the steps in the README.

To deploy to a new Netlify site, change the --site value in apps/docs/package.json.

Next Runtime version

4.40.2

Is your issue related to the app directory?

  • Yes, I am using the app directory

More information about your build

  • I am building using the CLI
  • I am building using file-based configuration (netlify.toml)

What OS are you using?

Mac OS

Your netlify.toml file

`netlify.toml`
[build]
  command = "pnpm run build"
  base = "apps/docs"
  publish = ".next"

[build.environment]
  NETLIFY_USE_PNPM = "true"

[[plugins]]
package = "@netlify/plugin-nextjs"

Your public/_redirects file

`_redirects`
# Paste content of your `_redirects` file here

Your next.config.js file

`next.config.js`
module.exports = {
  reactStrictMode: true,
  transpilePackages: ["ui"],
};

Builds logs (or link to your logs)

Build logs
❯ pnpm run deploy --filter=docs --force

> my-turborepo@ deploy /Users/spencer/Dev/elliottsj/nextjs-netlify-follow-redirects-issue
> turbo run deploy --concurrency=1 "--filter=docs" "--force"

╭────────────────────────────────────────────────────────────────────────╮
│                                                                        │
│                  Update available v1.10.14 ≫ v1.10.15                  │
│    Changelog: https://github.com/vercel/turbo/releases/tag/v1.10.15    │
│               Run "npx @turbo/codemod update" to update                │
│                                                                        │
│      Follow @turborepo for updates: https://twitter.com/turborepo      │
╰────────────────────────────────────────────────────────────────────────╯
• Packages in scope: docs
• Running deploy in 1 packages
• Remote caching disabled
docs:deploy: cache bypass, force executing ac934134be8bf4d8
docs:deploy:
docs:deploy: > docs@1.0.0 deploy /Users/spencer/Dev/elliottsj/nextjs-netlify-follow-redirects-issue/apps/docs
docs:deploy: > netlify deploy --build --prod --auth $NETLIFY_AUTH_TOKEN --site 412ef113-aa7d-4f00-9c58-8cc9a4a885e1 --skip-functions-cache
docs:deploy:
docs:deploy:
docs:deploy: Netlify Build
docs:deploy: ────────────────────────────────────────────────────────────────
docs:deploy:
docs:deploy: ❯ Version
docs:deploy:   @netlify/build 29.22.2
docs:deploy:
docs:deploy: ❯ Flags
docs:deploy:   {}
docs:deploy:
docs:deploy: ❯ Current directory
docs:deploy:   /Users/spencer/Dev/elliottsj/nextjs-netlify-follow-redirects-issue/apps/docs
docs:deploy:
docs:deploy: ❯ Config file
docs:deploy:   /Users/spencer/Dev/elliottsj/nextjs-netlify-follow-redirects-issue/apps/docs/netlify.toml
docs:deploy:
docs:deploy: ❯ Context
docs:deploy:   dev
docs:deploy:
docs:deploy: ❯ Using Next.js Runtime - v4.40.2
docs:deploy:
docs:deploy: @netlify/plugin-nextjs (onPreBuild event)
docs:deploy: ────────────────────────────────────────────────────────────────
docs:deploy:
docs:deploy: No Next.js cache to restore.
docs:deploy: Netlify configuration property "build.environment.NEXT_PRIVATE_TARGET" value changed.
docs:deploy:
docs:deploy: (@netlify/plugin-nextjs onPreBuild completed in 797ms)
docs:deploy:
docs:deploy: build.command from netlify.toml
docs:deploy: ────────────────────────────────────────────────────────────────
docs:deploy:
docs:deploy: $ pnpm run build
docs:deploy:
docs:deploy: > docs@1.0.0 build /Users/spencer/Dev/elliottsj/nextjs-netlify-follow-redirects-issue/apps/docs
docs:deploy: > next build
docs:deploy:
docs:deploy:    Creating an optimized production build ...
docs:deploy:  ✓ Compiled successfully
docs:deploy:    Linting and checking validity of types ...
docs:deploy:    Collecting page data ...
docs:deploy:    Generating static pages (0/4) ...
   Generating static pages (1/4)
   Generating static pages (2/4)
   Generating static pages (3/4)
 ✓ Generating static pages (4/4)
docs:deploy:    Finalizing page optimization ...
docs:deploy:    Collecting build traces ...
docs:deploy:
docs:deploy: Route (app)                              Size     First Load JS
docs:deploy: ┌ ○ /                                    745 B          81.1 kB
docs:deploy: └ ○ /_not-found                          883 B          81.2 kB
docs:deploy: + First Load JS shared by all            80.3 kB
docs:deploy:   ├ chunks/05ad1faf-649722ada73fd971.js  51 kB
docs:deploy:   ├ chunks/183-2889461cbead6e9f.js       27.5 kB
docs:deploy:   ├ chunks/main-app-f0d99205d70d78b5.js  232 B
docs:deploy:   └ chunks/webpack-bf1a64d1eafd2816.js   1.66 kB
docs:deploy:
docs:deploy:
docs:deploy: ○  (Static)  automatically rendered as static HTML (uses no initial props)
docs:deploy:
docs:deploy:
docs:deploy: (build.command completed in 9.1s)
docs:deploy:
docs:deploy: @netlify/plugin-nextjs (onBuild event)
docs:deploy: ────────────────────────────────────────────────────────────────
docs:deploy:
docs:deploy: apiLambdas []
docs:deploy: ssrLambdas []
docs:deploy: Moving static page files to serve from CDN...
docs:deploy: Moved 6 files
docs:deploy: You are not using Netlify Edge Functions for image format detection. Set env var "NEXT_FORCE_EDGE_IMAGES=true" to enable.
docs:deploy: Netlify configuration property "redirects" value changed to [
docs:deploy:   { from: '/_next/static/*', to: '/static/:splat', status: 200 },
docs:deploy:   {
docs:deploy:     from: '/_next/image*',
docs:deploy:     query: { url: ':url', w: ':width', q: ':quality' },
docs:deploy:     to: '/_ipx/w_:width,q_:quality/:url',
docs:deploy:     status: 301
docs:deploy:   },
docs:deploy:   { from: '/_ipx/*', to: '/.netlify/builders/_ipx', status: 200 },
docs:deploy:   {
docs:deploy:     from: '/api/*',
docs:deploy:     to: '/.netlify/functions/___netlify-handler',
docs:deploy:     status: 200
docs:deploy:   },
docs:deploy:   {
docs:deploy:     from: '/*',
docs:deploy:     to: '/.netlify/functions/___netlify-handler',
docs:deploy:     status: 200,
docs:deploy:     conditions: { Cookie: [Array] },
docs:deploy:     force: true
docs:deploy:   },
docs:deploy:   {
docs:deploy:     from: '/_next/data/qjjfVGZxqabXDPFcxPBE-/_not-found.json',
docs:deploy:     to: '/.netlify/functions/___netlify-handler',
docs:deploy:     status: 200,
docs:deploy:     force: false
docs:deploy:   },
docs:deploy:   {
docs:deploy:     from: '/_not-found',
docs:deploy:     to: '/.netlify/functions/___netlify-handler',
docs:deploy:     status: 200,
docs:deploy:     force: false
docs:deploy:   },
docs:deploy:   {
docs:deploy:     from: '/*',
docs:deploy:     to: '/.netlify/functions/___netlify-handler',
docs:deploy:     status: 200
docs:deploy:   }
docs:deploy: ].
docs:deploy:
docs:deploy: (@netlify/plugin-nextjs onBuild completed in 974ms)
docs:deploy:
docs:deploy: Functions bundling
docs:deploy: ────────────────────────────────────────────────────────────────
docs:deploy:
docs:deploy: Packaging Functions from .netlify/functions-internal directory:
docs:deploy:  - ___netlify-handler/___netlify-handler.js
docs:deploy:  - ___netlify-odb-handler/___netlify-odb-handler.js
docs:deploy:  - _ipx/_ipx.js
docs:deploy:
docs:deploy:
docs:deploy: (Functions bundling completed in 15s)
docs:deploy:
docs:deploy: Edge Functions bundling
docs:deploy: ────────────────────────────────────────────────────────────────
docs:deploy:
docs:deploy: Packaging Edge Functions from .netlify/edge-functions directory:
docs:deploy:  - rsc-data
docs:deploy:
docs:deploy: (Edge Functions bundling completed in 731ms)
docs:deploy:
docs:deploy: @netlify/plugin-nextjs (onPostBuild event)
docs:deploy: ────────────────────────────────────────────────────────────────
docs:deploy:
docs:deploy: Next.js cache saved.
docs:deploy:
docs:deploy: (@netlify/plugin-nextjs onPostBuild completed in 52ms)
docs:deploy:
docs:deploy: Netlify Build Complete
docs:deploy: ────────────────────────────────────────────────────────────────
docs:deploy:
docs:deploy: (Netlify Build completed in 27.6s)
docs:deploy: Deploy path:        /Users/spencer/Dev/elliottsj/nextjs-netlify-follow-redirects-issue/apps/docs/.next
docs:deploy: Configuration path: /Users/spencer/Dev/elliottsj/nextjs-netlify-follow-redirects-issue/apps/docs/netlify.toml
docs:deploy: Deploying to main site URL...
docs:deploy: - Hashing files...
docs:deploy: - Looking for a functions cache...
docs:deploy: ✔ Ignoring functions cache (use without --skip-functions-cache to change)
docs:deploy: ✔ Finished hashing 24 files, 3 functions and edge functions
docs:deploy: - CDN diffing files...
docs:deploy: ✔ CDN requesting 9 files and 2 functions
docs:deploy: - Uploading 12 files
docs:deploy: ✔ Finished uploading 12 assets
docs:deploy: - Waiting for deploy to go live...
docs:deploy: ✔ Deploy is live!
docs:deploy:
docs:deploy: Build logs:        https://app.netlify.com/sites/nextjs-follow-redirects-docs/deploys/65259c8e687e5f1af68d21b6
docs:deploy: Function logs:     https://app.netlify.com/sites/nextjs-follow-redirects-docs/functions
docs:deploy: Unique deploy URL: https://65259c8e687e5f1af68d21b6--nextjs-follow-redirects-docs.netlify.app
docs:deploy: Website URL:       https://nextjs-follow-redirects-docs.netlify.app

 Tasks:    1 successful, 1 total
Cached:    0 cached, 1 total
  Time:    42.655s

Function logs

Function logs
Oct 10, 03:10:50 PM: 976f7d04 2023-10-10T19:10:50.697Z	undefined	ERROR	Uncaught Exception 	{"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'follow-redirects'\nRequire stack:\n- /var/task/.netlify/functions-internal/___netlify-handler/handlerUtils.js\n- /var/task/.netlify/functions-internal/___netlify-handler/___netlify-handler.js\n- /var/task/___netlify-handler.js\n- /var/runtime/index.mjs","stack":["Runtime.ImportModuleError: Error: Cannot find module 'follow-redirects'","Require stack:","- /var/task/.netlify/functions-internal/___netlify-handler/handlerUtils.js","- /var/task/.netlify/functions-internal/___netlify-handler/___netlify-handler.js","- /var/task/___netlify-handler.js","- /var/runtime/index.mjs","    at _loadUserApp (file:///var/runtime/index.mjs:1061:17)","    at async UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:1093:21)","    at async start (file:///var/runtime/index.mjs:1256:23)","    at async file:///var/runtime/index.mjs:1262:1"]}Oct 10, 03:10:50 PM: 976f7d04 2023-10-10T19:10:50.903Z	undefined	ERROR	Uncaught Exception 	{"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module 'follow-redirects'\nRequire stack:\n- /var/task/.netlify/functions-internal/___netlify-handler/handlerUtils.js\n- /var/task/.netlify/functions-internal/___netlify-handler/___netlify-handler.js\n- /var/task/___netlify-handler.js\n- /var/runtime/index.mjs","stack":["Runtime.ImportModuleError: Error: Cannot find module 'follow-redirects'","Require stack:","- /var/task/.netlify/functions-internal/___netlify-handler/handlerUtils.js","- /var/task/.netlify/functions-internal/___netlify-handler/___netlify-handler.js","- /var/task/___netlify-handler.js","- /var/runtime/index.mjs","    at _loadUserApp (file:///var/runtime/index.mjs:1061:17)","    at async UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:1093:21)","    at async start (file:///var/runtime/index.mjs:1256:23)","    at async file:///var/runtime/index.mjs:1262:1"]}Oct 10, 03:10:50 PM: 976f7d04 Unknown application error occurredOct 10, 03:10:50 PM: 976f7d04 Runtime.ImportModuleErrorOct 10, 03:10:50 PM: 976f7d04 Duration: 224.65 ms	Memory Usage: 18 MB	

.next JSON files

generated .next JSON files

.next/build-manifest.json

{
  "polyfillFiles": [
    "static/chunks/polyfills.js"
  ],
  "devFiles": [
    "static/chunks/react-refresh.js"
  ],
  "ampDevFiles": [],
  "lowPriorityFiles": [
    "static/development/_buildManifest.js",
    "static/development/_ssgManifest.js"
  ],
  "rootMainFiles": [],
  "pages": {
    "/": [
      "static/chunks/webpack.js",
      "static/chunks/main.js",
      "static/chunks/pages/index.js"
    ],
    "/_app": [
      "static/chunks/webpack.js",
      "static/chunks/main.js",
      "static/chunks/pages/_app.js"
    ],
    "/_error": [
      "static/chunks/webpack.js",
      "static/chunks/main.js",
      "static/chunks/pages/_error.js"
    ]
  },
  "ampFirstPages": []
}

.next/server/pages-manifest.json

{
  "/_app": "pages/_app.js",
  "/_error": "pages/_error.js",
  "/_document": "pages/_document.js",
  "/": "pages/index.js"
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugcode to address defects in shipped codev4Issues related to the v4 Next.js runtime

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions