Deploy Storybook on Netlify with Nextjs - next.js

I am trying to deploy my Storybook on Netlify, I'm using Next.js framework but it fails every time and I don't know what is wrong
Netlify configuration :
Build command: npm run build-storybook
Publish directory: storybook-static
My package.json:
{
"homepage": "https://github.com/alexCoding42/tailwind-storybook",
"name": "tailwind-storybook",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook"
},
"dependencies": {
"next": "10.0.9",
"react": "17.0.1",
"react-dom": "17.0.1"
},
"devDependencies": {
"#babel/core": "^7.13.10",
"#netlify/plugin-nextjs": "^3.0.3",
"#storybook/addon-actions": "^6.2.0-alpha.22",
"#storybook/addon-essentials": "^6.2.0-alpha.22",
"#storybook/addon-links": "^6.2.0-alpha.22",
"#storybook/react": "^6.2.0-alpha.22",
"#types/node": "^14.14.35",
"#types/react": "^17.0.3",
"babel-loader": "^8.2.2",
"gh-pages": "^3.1.0",
"postcss-flexbugs-fixes": "^5.0.2",
"postcss-preset-env": "^6.7.0",
"prettier": "^2.2.1",
"tailwindcss": "^2.0.4",
"typescript": "^4.2.3"
}
}
The error I get on Netlify:
Plugin "#netlify/plugin-nextjs" internal error
Error: No static assets found in .next dist (aka no /.next/static). Please check your project configuration. Your next.config.js must be one of serverless or experimental-serverless-trace. Your build command should include next build.
I have also tried to add a netlify.toml at the root of my project with this config:
[build]
command = "npm run build-storybook"
publish = "storybook-static"
[[plugins]]
package = "#netlify/plugin-nextjs"
And added #netlify/plugin-nextjsas dev dependency of package.json but I get the same error...
Can someone help me on this please ?

I had a similar problem but not with the storybook but with nx + nextjs.
If I tried to deploy the app to the netlify I got the same error.
So I changed next.config.js in the root directory and add to distDir path to generated .static folder and it's working now.
and this is my netlify.toml ss

The Netlify Next.js plugin isn't required for a Storybook build. In fact, no plugins are required; the only configuration needed is, as OP says:
Build command: npm run build-storybook
Publish directory: storybook-static
Or, in netlify.toml:
[build]
command = "npm run build-storybook"
publish = "storybook-static"
No [[plugins]] fields are needed.
If Netlify is configured through the UI, go to https://app.netlify.com/sites/my-awesome-site/plugins and remove the Next.JS plugin.

Related

Vercel(Next.js): Error: No Next.js version could be detected in your project. Make sure `"next"` is installed in "dependencies" or "devDependencies"

I'm embarrassed this error. This error situation is no Next.js version could be detected in your project.
Building sequence is here.
[23:41:09.846] Running build in Cleveland, USA (East) – cle1
[23:41:09.895] Cloning github.com/minsing-jin/web_study_2 (Branch: main, Commit: 15e242e)
[23:41:10.150] Previous build cache not available
[23:41:10.214] Cloning completed: 318.763ms
[23:41:10.328] Running "vercel build"
[23:41:10.769] Vercel CLI 28.15.3
[23:41:10.992] Your application is being built using `next build`. If you need to define a different build step, please create a `vercel-build` script in your `package.json` (e.g. `{ "scripts": { "vercel-build": "npm run prepare && next build" } }`).
[23:41:10.994] Installing dependencies...
[23:41:11.290] yarn install v1.22.17
[23:41:11.310] warning package.json: No license field
[23:41:11.318] info No lockfile found.
[23:41:11.322] warning No license field
[23:41:11.323] [1/4] Resolving packages...
[23:41:11.324] [2/4] Fetching packages...
[23:41:11.324] [3/4] Linking dependencies...
[23:41:11.329] [4/4] Building fresh packages...
[23:41:11.332] success Saved lockfile.
[23:41:11.335] Done in 0.05s.
[23:41:11.399] Error: No Next.js version could be detected in your project. Make sure `"next"` is installed in "dependencies" or "devDependencies"
And my package.json is here.
{
"name": "portfolio_site",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"#next/font": "13.1.1",
"autoprefixer": "^10.4.13",
"date-fns": "^2.29.3",
"dotenv": "^16.0.3",
"eslint": "8.31.0",
"eslint-config-next": "13.1.1",
"next": "^13.1.1",
"next-themes": "^0.2.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-lottie-player": "^1.5.4"
},
"devDependencies": {
"tailwindcss": "^3.2.4"
},
"scripts": {
"start": "node_modules/next/dist/bin/next start -p $PORT"
},
"engines": {
"node": "16.X"
}
}
Error detail is no next.js version could be detected in my project. And it advise me to make sure "next" is installed in "dependencies" or "devDependencies". But I installed next in "dependencies and it exist in dependencies as we can see from above. I can't solve this problem and I don't know where to start.
I tried to delete yarn.lock. But my portfolio_site file didn't exist yarn.lock in the first place.

Vercel, Next.js, Sanity.io production deployment fails

I have a Next.js + Sanity.io project and when I deploy from local build using vercel CLI with
vercel build and then vercel deploy --prebuilt, it works great.
However, when I do vercel --prod to create production deployment, it keeps failing.
The log goes:
[16:48:49.455] Previous build cache not available
[16:48:49.684] Downloading 69 deployment files...
[16:48:50.586] Running "vercel build"
[16:48:51.246] Vercel CLI 28.10.0
[16:48:51.661] Installing dependencies...
[16:48:52.107] yarn install v1.22.17
[16:48:52.183] [1/4] Resolving packages...
[16:48:52.393] [2/4] Fetching packages...
[16:49:16.863] [3/4] Linking dependencies...
[16:49:31.972] [4/4] Building fresh packages...
[16:49:32.468] Done in 40.37s.
[16:49:32.503] Detected Next.js version: 13.1.1-canary.1
[16:49:32.505] Running "yarn run build"
[16:49:32.842] yarn run v1.22.17
[16:49:32.888] $ next build
[16:49:33.425] Attention: Next.js now collects completely anonymous telemetry regarding usage.
[16:49:33.425] This information is used to shape Next.js' roadmap and prioritize features.
[16:49:33.425] You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
[16:49:33.425] https://nextjs.org/telemetry
[16:49:33.426]
[16:49:33.588] info - Linting and checking validity of types...
[16:49:38.211] Failed to compile.
[16:49:38.212]
[16:49:38.212] ./sanity/sanity.cli.ts:1:31
[16:49:38.212] Type error: Cannot find module 'sanity/cli' or its corresponding type declarations.
[16:49:38.212]
[16:49:38.213] [0m[31m[1m>[22m[39m[90m 1 | [39m[36mimport[39m {defineCliConfig} [36mfrom[39m [32m'sanity/cli'[39m[0m
[16:49:38.213] [0m [90m | [39m [31m[1m^[22m[39m[0m
[16:49:38.213] [0m [90m 2 | [39m[0m
[16:49:38.213] [0m [90m 3 | [39m[36mexport[39m [36mdefault[39m defineCliConfig({[0m
[16:49:38.213] [0m [90m 4 | [39m api[33m:[39m {[0m
[16:49:38.253] error Command failed with exit code 1.
[16:49:38.254] info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[16:49:38.283] Error: Command "yarn run build" exited with 1
my package.json:
{
"name": "portfolio-project",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"#portabletext/react": "^2.0.0",
"#sanity/image-url": "^1.0.1",
"#types/node": "18.11.12",
"#types/react": "18.0.26",
"#types/react-dom": "18.0.9",
"#vercel/analytics": "^0.1.6",
"eslint": "8.29.0",
"eslint-config-next": "13.0.6",
"framer-motion": "^7.6.19",
"next": "13.0.6",
"next-sanity": "^3.1.5",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-simple-typewriter": "^5.0.1",
"react-social-icons": "^5.15.0",
"typescript": "4.9.4"
},
"devDependencies": {
"autoprefixer": "^10.4.13",
"postcss": "^8.4.19",
"tailwind-scrollbar": "^2.0.1",
"tailwindcss": "^3.2.4"
}
}
sanity package.json in the sanity folder:
{
"name": "portfolio-project",
"private": true,
"version": "1.0.0",
"main": "package.json",
"license": "UNLICENSED",
"scripts": {
"dev": "sanity dev",
"start": "sanity start",
"build": "sanity build",
"deploy": "sanity deploy",
"deploy-graphql": "sanity graphql deploy"
},
"keywords": [
"sanity"
],
"dependencies": {
"#sanity/vision": "^3.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-is": "^18.2.0",
"sanity": "^3.0.0",
"styled-components": "^5.2.0"
},
"devDependencies": {
"#sanity/eslint-config-studio": "^2.0.1",
"eslint": "^8.6.0",
"prettier": "^2.8.1",
"typescript": "^4.0.0"
},
"prettier": {
"semi": false,
"printWidth": 100,
"bracketSpacing": false,
"singleQuote": true
}
}
Anyone having the same problem?
It keeps saying it cannot find module 'sanity/cli' or its corresponding type declarations.
I've tried upgrading Next.js version to the latest (next#canary) as somebody suggested, installing #sanity/cli to the local and etc, but found no luck.
If anyone has a clue, please help!!!
What solved my case was to add this to next.config.js
eslint: {
// Warning: This allows production builds to successfully complete even if
// your project has ESLint errors.
ignoreDuringBuilds: true
},
typescript: {
// !! WARN !!
// Dangerously allow production builds to successfully complete even if
// your project has type errors.
// !! WARN !!
ignoreBuildErrors: true
}
Be mindful that this does not break anything in your code. I think it maybe is because of having a NextJS project with typescript and the Sanity project aswell. Or maybe because it is not installing still the dependencies of Sanity package.json when doing a next build.
Having almost similar problem, except that for me, it does not even work for vercel build
I posted the same question didn't find an answer yet. Even editing Next.config.js not works for me
Problem Deploying a Next JS + Sanity Project to Vercel

Problem Deploying a Next JS + Sanity Project to Vercel

I was on a project and used nextjs with sanity but after almost finishing my project, I just don't see any way to deploy it. Learning sanity took quite a bit of time but what meaning is there if I can't use it anywhere.
I installed vercel and ran vercel build this is what it shows me:
[17:27:01.100] Retrieving list of deployment files...
[17:27:01.382] Previous build cache not available
[17:27:01.637] Downloading 75 deployment files...
[17:27:02.283] Running "vercel build"
[17:27:02.784] Vercel CLI 28.10.0
[17:27:03.095] Installing dependencies...
[17:27:11.072]
[17:27:11.073] added 229 packages in 8s
[17:27:11.073]
[17:27:11.073] 32 packages are looking for funding
[17:27:11.073] run `npm fund` for details
[17:27:11.086] Detected Next.js version: 13.0.7
[17:27:11.089] Detected `package-lock.json` generated by npm 7+...
[17:27:11.089] Running "npm run build"
[17:27:11.396]
[17:27:11.396] > ptfolio#0.1.0 build
[17:27:11.396] > next build
[17:27:11.396]
[17:27:11.838] Attention: Next.js now collects completely anonymous telemetry regarding usage.
[17:27:11.839] This information is used to shape Next.js' roadmap and prioritize features.
[17:27:11.839] You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
[17:27:11.839] https://nextjs.org/telemetry
[17:27:11.839]
[17:27:11.968] info - Linting and checking validity of types...
[17:27:15.476] Failed to compile.
[17:27:15.476]
[17:27:15.476] ./sanity/sanity.cli.ts:1:31
[17:27:15.477] Type error: Cannot find module 'sanity/cli' or its corresponding type declarations.
[17:27:15.477]
[17:27:15.477] [0m[31m[1m>[22m[39m[90m 1 | [39m[36mimport[39m {defineCliConfig} [36mfrom[39m [32m'sanity/cli'[39m[0m
[17:27:15.477] [0m [90m | [39m [31m[1m^[22m[39m[0m
[17:27:15.477] [0m [90m 2 | [39m[0m
[17:27:15.477] [0m [90m 3 | [39m[36mexport[39m [36mdefault[39m defineCliConfig({[0m
[17:27:15.477] [0m [90m 4 | [39m api[33m:[39m {[0m
[17:27:15.520] Error: Command "npm run build" exited with 1
And I have tried installing sanity cli, sanity client, sanity image url, tried pushing into github and deploy from there. Don't know what to do anymore
Edit: here's my pakage.json file->
{
"name": "ptfolio",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"#heroicons/react": "^2.0.13",
"#next/font": "13.0.7",
"#portabletext/react": "^2.0.0",
"#sanity/cli": "^3.1.2",
"#sanity/client": "^3.4.1",
"#sanity/image-url": "^1.0.1",
"#types/node": "18.11.16",
"#types/react": "18.0.26",
"#types/react-dom": "18.0.9",
"framer-motion": "^7.10.2",
"git": "^0.1.5",
"next": "13.0.7",
"next-sanity": "^3.1.8",
"next-sanity-image": "^5.0.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-hook-form": "^7.41.1",
"react-simple-typewriter": "^5.0.1",
"react-social-icons": "^5.15.0",
"typescript": "4.9.4"
},
"devDependencies": {
"autoprefixer": "^10.4.13",
"postcss": "^8.4.20",
"tailwind-scrollbar": "^2.0.1",
"tailwindcss": "^3.2.4"
}
}
Make sure that sanity/cli dependency is not install globaly or in devDependencies.

Module not found: Can't resolve './Withdraw' when deploying Next.js App

I've been working on this app locally with Next.js. It deploys and builds fine locally, but I'm having issues getting it to work when deploying it to Fleek and Vercel.
On Fleek, I have configured the deploy and build settings for a Next.js app, but I'm still running into this issue.
When I try to deploy and build to the live server on Fleek, I get the following error.
2:39:21 PM 12/11/2022: Failed to compile.
2:39:21 PM 12/11/2022: ./components/Pool.js
2:39:21 PM 12/11/2022: Module not found: Can't resolve './Withdraw' in '/workspace/components'
2:39:21 PM 12/11/2022: Import trace for requested module:
2:39:21 PM 12/11/2022: ./pages/Stake.js
2:39:21 PM 12/11/2022: > Build failed because of webpack errors
2:39:21 PM 12/11/2022: error Command failed with exit code 1.
The next.config.js file:
/** #type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
eslint: {
ignoreDuringBuilds: true,
},
resolve: {
extensions: ["", ".js", ".jsx"],
},
}
module.exports = nextConfig
The package.json file:
{
"name": "gwin-app",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"#headlessui/react": "^1.6.6",
"#heroicons/react": "^1.0.6",
"moralis": "^1.9.0",
"next": "12.2.2",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-hot-toast": "^2.3.0",
"react-moralis": "^1.4.0",
"tw-elements": "^1.0.0-alpha12",
"web3": "^1.7.5",
"web3uikit": "^0.1.170"
},
"devDependencies": {
"autoprefixer": "^10.4.7",
"eslint": "8.20.0",
"eslint-config-next": "12.2.2",
"postcss": "^8.4.14",
"tailwindcss": "^3.1.6"
}
}
Here is the import in Pool.js
import Withdraw from "./Withdraw"
Withdraw.js looks like this
#imports
const Withdraw = ({
#props
}) => {
#stuff
}
export default Withdraw
I've tried:
ignoring eslint in the next.config.js.
changing the path for Withdraw.js from '../components/Withdraw' to './Withdraw' (Pool.js and Withdraw.js are both in the components folder). I thought maybe a different path would help.
yarn build && yarn start (locally, which works)
Checking that component is "Withdraw" and "Withdraw.js" is the file.
resolving ext. in next.config.js
This is a case sensitivity issue with git and operating systems.
Find more info here https://github.com/vercel/next.js/issues/9482 .
#jamesmosier pointed out the following:
Try changing the name of the file completely and test again. There can be case sensitivity issues with git and operating systems, especially if you commit a file as one case (i.e. componentOne.js) and then change it later (to something like ComponentOne.js). If that works, commit that new file name and then you can change it back to the original filename and commit that again.
This error is very hard to spot, because there is no indication of anything wrong in the IDE, everything appears to be 100% correct, but behind the scenes there are case sensitivity issues.
So do the following:
Rename the module Withdraw.js and all of the references to something
entirely new
Commit the changes
Rename everything back to the desired names and commit/push your changes
After that, the issue is resolved and the app deploys.

HookWebpackError: EMFILE: too many open files, When execute npm run export

According to this link
I have configured my package.json project file using these code snipped:
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"export": "npm run build && next export -o _static",
"lint": "next lint"
},
But when I run the command: npm run export in the terminal, It causes errors:
Failed to compile.
HookWebpackError: EMFILE: too many open files, open 'E:\Projects\React\dastshafa-final\node_modules\#mui\icons-material\SixKOutlined.js'
at makeWebpackError (E:\Projects\React\dastshafa-final\node_modules\next\dist\compiled\webpack\bundle5.js:41664:9)
at E:\Projects\React\dastshafa-final\node_modules\next\dist\compiled\webpack\bundle5.js:25354:12
at eval (eval at create (E:\Projects\React\dastshafa-final\node_modules\next\dist\compiled\webpack\bundle5.js:140346:10), <anonymous>:27:1)
at E:\Projects\React\dastshafa-final\node_modules\next\dist\compiled\webpack\bundle5.js:22805:26
at E:\Projects\React\dastshafa-final\node_modules\next\dist\build\webpack\plugins\next-trace-entrypoints-plugin.js:327:36
-- inner error --
Error: EMFILE: too many open files, open 'E:\Projects\React\dastshafa-final\node_modules\#mui\icons-material\SixKOutlined.js'
caused by plugins in Compilation.hooks.processAssets
Error: EMFILE: too many open files, open 'E:\Projects\React\dastshafa-final\node_modules\#mui\icons-material\SixKOutlined.js'
> Build failed because of webpack errors
I can not find a good solution for it please help. tnx
OS:Windows 8.1
Node.js:18
Edit
package.json:
{
"name": "dastshafa-final",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"export": "npm run build && next export -o _static",
"lint": "next lint"
},
"dependencies": {
"#emotion/react": "^11.8.2",
"#emotion/styled": "^11.8.1",
"#material-ui/icons": "^4.11.3",
"#mui/icons-material": "^5.6.2",
"axios": "^0.26.1",
"bootstrap": "^5.1.3",
"jquery": "^3.4.1",
"jquery-ui": "^1.12.1",
"lodash": "^4.17.21",
"next": "12.1.0",
"react": "17.0.2",
"react-dom": "17.0.2",
"react-redux": "^7.2.6",
"react-simple-star-rating": "^4.0.5",
"react-toastify": "^8.2.0",
"redux": "^4.1.2",
"redux-devtools-extension": "^2.13.9",
"redux-thunk": "^2.4.1"
},
"devDependencies": {
"eslint": "8.11.0",
"eslint-config-next": "12.1.0"
}
}
I was getting the same error while building NextJS project (12.0.10), I've fixed these by importing mui icons directly without destructing,
Getting Error while build
import { ShoppingCart } from "#mui/icons-material";
Able to build
import ShoppingCartIcon from "#mui/icons-material/ShoppingCart";
Finally, I got an answer.
It is nothing but a memory leak, Every time Ram is occupied with programs, we encounter this error. The solution is to close additional programs or upgrade the system RAM.
tnx and congratulations
I also got this error while running npm run build on a next.js project styled with Material UI
The issue was that by importing MUI components like this:
import {Paper} from "#mui/materials"
import {Cancel} from "#mui/icons-materials"
I am not just importing the <Paper /> and <Cancle /> mui components, but the entire #mui libraries. Hence, HookWebpackError: EMFILE: too many open files, increasing the bundle size
See https://mui.com/material-ui/guides/minimizing-bundle-size/ for more info.
I also did not like the look of this:
import * as React from react
So this is what is changed things to to work:
import React from "react"
import Paper from "#mui/materials/Paper"
import Cancel from "#mui/icons-materials/Cancel"

Resources