next-runtime
next-runtime copied to clipboard
[Bug]: `Runtime.ImportModuleError - Error: Cannot find module 'follow-redirects'` when deploying with netlify-cli and pnpm
Summary
When using:
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
appdirectory
More information about your build
- [X] I am building using the CLI
- [x] 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: > [email protected] 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: > [email protected] 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"
}
Related: https://github.com/netlify/next-runtime/issues/1834
I have tried with and without public-hoist-pattern[] = follow-redirects in .npmrc, and the same result occurs.
Hey @elliottsj - thanks for raising this. We've seen a few issues with Next 13.5+ and our runtime which we're trying to sort out. Once this PR is merged and released, can you try building again?
#2313
Also, we're working on some major improvements to the runtime which should make future Next.js version support on Netlify much better. 👍🏻
This issue affects Next.js 13.4 as well.
Commit: https://github.com/elliottsj/nextjs-netlify-follow-redirects-issue/commit/669b8ad48511dd2b5eb232b74039df0a58a03258 Deploy job: https://github.com/elliottsj/nextjs-netlify-follow-redirects-issue/actions/runs/6477034686/job/17586616872 Site URL: https://6526020579509c6f02acbbc9--nextjs-follow-redirects-docs.netlify.app
Update: deployed again here, with logs showing the version number:
Commit: https://github.com/elliottsj/nextjs-netlify-follow-redirects-issue/commit/0c5bdd5cb92bb765831f0918ffb3733bfcd37391 Deploy job: https://github.com/elliottsj/nextjs-netlify-follow-redirects-issue/actions/runs/6600138361/job/17929857387 Site URL: https://653458ab9c63b34d3835ac3d--nextjs-follow-redirects-docs.netlify.app
Tried downgrading to netlify-cli@^15.11.0. Same result:
Commit: https://github.com/elliottsj/nextjs-netlify-follow-redirects-issue/commit/8bded9dc27a923e482dc5a6adc50821267e4a09e Deploy job: https://github.com/elliottsj/nextjs-netlify-follow-redirects-issue/actions/runs/6721993516/job/18268962647 Site URL: https://65427638489c30182dc810ad--nextjs-follow-redirects-docs.netlify.app
Hey @elliottsj - thanks for raising this. We've seen a few issues with Next 13.5+ and our runtime which we're trying to sort out. Once this PR is merged and released, can you try building again?
#2313
Also, we're working on some major improvements to the runtime which should make future Next.js version support on Netlify much better. 👍🏻
Hi @MarcL, #2313 has been merged. But the Runtime.ImportModule error still persists in my project. I'm using [email protected]
Hi @elliottsj @kaf-lamed-beyt
The team at Netlify have now released the new v5 Next.js runtime which has support for both pages and app router, on-demand and time-based revalidation, automatic fine-grained cache control, and automatic image optimization using Netlify's image CDN.
You can find the documentation and additional information on the new runtime here: Next.js on Netlify
The v4 runtime is now in the maintenance support phase with no new features being added. Occasional bug fixes and security patches will be applied when needed.
Thanks!
Ayy! Great work! 🚀