-
Notifications
You must be signed in to change notification settings - Fork 27.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vercel error no such file or directory, open '/var/task/node_modules/shiki/themes/one-dark-pro.json' #52711
Comments
Hey, I have the same issue. My json file is located in root, and it works fine locally, but when trying to load it on Vercel, I get the Using NextJS 13 app router |
Same issue here. |
I am also using the app directory did you find some fix? |
This is likely related to next-mdx-remote and Shiki. Sounds like the file tracking is not handling it correctly. |
did you find some fix for that? |
Having the same issue |
Same here :/ |
Still no response from nextjs team😔 |
I am having the same issue unfortunately |
Did anyone find a solution to this problem? |
does it occur when you navigate to a dynamic page? for example if your building a blog website it would be at www.website.com/blog/your-dynamic-blog-post if so then you might need to use next.js 13 generateStaticParams() function if your not already doing so, as this occurred with me as well until I generated my static params and the error went away |
I am using generatestaticparamas in my dynamic route but I set a limit for 100 blogs to build on build time as if I build all the blogs at build time this take time so I will then generate the rest of blogs on demand when someone come to that slug I will then call the cms to check if there is any blog related to that slug if not i return 404 this is more efficient way |
I found the answer here: basically in nextjs there are 3 states:
We want Shiki on getServerSideProps. This means:
The trick is:
The key here is to let Vercel nft to know about the existence of Shiki/themes and shiki/languages so they are included in the production run-time Sample code: https://github.com/thien-do/memos.pub/blob/a3babb1f149f05c43012278331f885d81f5fcfac/lib/mdx/plugins/code.ts credit to thien-do |
Not work for me in a monorepo setup with Turborepo. I followed this and when I check the build output ( |
@dangminhngo you won't see the shiki assets in the .next folder because Next.js uses webpack to bundle and optimize the application. During this process, files might be renamed, minified, and split into different chunks. This could include combining various dependencies into common chunks, so finding individual files might be challenging. The critical aspect of the solution above is that it makes Vercel aware of the existence of the Shiki assets so they are included at runtime on the server. The exact location in the build folder might not be straightforward to identify, but as long as the deployed site is working as intended, it indicates that the assets are being correctly handled. |
To make rehype-pretty-code work properly, shiki files need to be included in production environment on Vercel. By reading shiki files, Vercel becomes aware that those files should be included. vercel/next.js#52711 (comment)
I did that ^ but now I just get the same error with the new path of /lib/shiki. Is it supposed to be a different path for monorepos with a project that uses app directory? |
Any updates from the Vercel team here @shuding ? Feels like this is something that should just work without having to hack NFT |
No fix for this issue yet? I am having the same problem in production (Vercel) |
Facing the same issue in production (Vercel), but my |
Tricky hack but works! |
This worked for me. Thanks. |
I have the same problem and I'm not using any frameworks even. My json folder is in root and it works with vercel dev locally, but when deployed the path is logged as /var/task/json/data.json and can't be found, though I see on Vercel's website under source > output that the json folder and data.json file exist. In my serverless function I'm reading the file like this:
|
I had the same problem and could fix it by moving my json file to
|
My issue was related to shiki. Commit ref: brulang/bru-website@2a85019 |
Having the same issue |
I feel like it is caused by some caching strategy. If I use the latest hash URL of vercel, it will work normally. |
I have my file in the public folder too, and do exactly what you do here, but I still get the following error:
The picture is available when browsing https://project-name.vercel.app/images/map_western_cape_kruger.jpg Any idea? |
|
I don't understand. |
I also use |
|
I'm facing the same issue. Already tried these to no avail:
|
Any update to solve this? Facing the same issue here |
Okay the workaround I found is to convert as base64 first, thankfully worked like charm |
stuck here too, must be an issue with vercel. their guide literally describes doing exactly what we are doing, but it breaks with the error above https://vercel.com/guides/loading-static-file-nextjs-api-route
|
Hey guys I also had this problem, try using an api route to read your file, It is the only way that worked for me. |
This comment has been minimized.
This comment has been minimized.
Do we have any updates on this ? I am running in the same issue Error: ENOENT: no such file or directory, open '/var/task/public/data.json' Not too sure about the maintainability of the solution proposed by alivault #52711 (comment) EDIT :
did this & it works fine but Next could put a disclaimer on their website if such behavior is intended at least |
I solved the problem for myself this way: const dataFilePath = path.resolve(process.cwd() + '/app/public/data.json') (Read-only) You can't write data to vercel, only read it, because you don't have full access to the disk. I recommend you to read from vercel/vercel#5320. As for media storage, it is better to use Vercel Blob. |
https://vercel.com/guides/how-can-i-use-files-in-serverless-functions Looks like you need to use path.join with process.cwd() |
I was having similar issues, and the solution I found was to add the following to my settings: experimental: {
outputFileTracingRoot: path.join(__dirname),
outputFileTracingIncludes: {
"/api/**/*": ["src/components/recipes/**/*"]
}
} Maybe it's my inexperience, but I spent a lot of time browsing the docs to find this guide. Here is my repo. I hope it helps. |
Verify canary release
Provide environment information
Operating System: Platform: darwin Arch: arm64 Version: Darwin Kernel Version 22.5.0: Thu Jun 8 22:22:19 PDT 2023; root:xnu-8796.121.3~7/RELEASE_ARM64_T8103 Binaries: Node: 16.16.0 npm: 9.8.0 Yarn: 1.22.19 pnpm: 7.16.0 Relevant Packages: next: 13.4.10 eslint-config-next: 13.4.10 react: 18.2.0 react-dom: 18.2.0 typescript: 5.1.6 Next.js Config: output: N/A
Which area(s) of Next.js are affected? (leave empty if unsure)
App Router
Link to the code that reproduces this issue or a replay of the bug
.
To Reproduce
got this error in vercel logs while building pages and i am using app router
ENOENT: no such file or directory, open '/var/task/node_modules/shiki/themes/one-dark-pro.json' and i also install shiki package
Describe the Bug
got this error in vercel logs while building pages and i am using app router
Expected Behavior
mdx
Which browser are you using? (if relevant)
brave
How are you deploying your application? (if relevant)
Vercel
The text was updated successfully, but these errors were encountered: