-
Notifications
You must be signed in to change notification settings - Fork 563
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
netlify preset support for custom baseURL #1484
Comments
any news here? facing the same problem serving over docker container on a domain in a sub-path like:
|
This is awkward, I've just spent a month upgrading a site to vue/nuxt 3 to find out I can't ship it to subfolders on netlify. edit: I've written a node script that runs post build to dump everything in the folder where the routes think it is. |
This was a supported feature in Nuxt 2.
@gavmck can you maybe share your node script that you used on netlify? And where/how do you run this? |
@exophunk Here you go. We haven't gone to prod, yet but it seems to work on deploy previews. We run it as part of the build command right after the build finishes. // The build needs to go from /dist/ into /dist/${env.SITE_CODE} or it doesn't work on netlify
// This script moves the build to the correct location
const fs = require('fs')
const siteCode = process.env.SITE_CODE
if (!siteCode) {
throw new Error('SITE_CODE is not defined')
}
const source = process.env.DIST_SOURCE || 'dist'
if (!fs.existsSync(source)) {
throw new Error(`Source directory ${source} does not exist`)
}
const destination = `${source}/${siteCode}`
if (fs.existsSync(destination)) {
throw new Error(`Destination directory ${destination} already exists`)
}
fs.mkdirSync(destination)
fs.readdirSync(source).forEach((file) => {
if (file !== siteCode) {
fs.renameSync(`${source}/${file}`, `${destination}/${file}`)
}
}) |
The paths are correct, the problem is that the assets are not there. When specifying Because nuxt correctly looks for This is not only a Netlify issue, but the same for Cloudflare Pages (and I assume most other hosting solutions too). It somehow works with At the moment, the nuxt config describes a Shouldn't |
I think the fix should be similar to https://github.com/unjs/nitro/pull/2464/files if someone wants to take a stab at it Regarding Cloudflare I opened #2821 |
I wish I had found this issue hours earlier, I would've invested the time in a PR instead of yelling at netlify 🥲 I've tried countless things ranging from trying to force nitro into another preset, changing the To @exophunk's point, it'd be incredibly helpful to have a big warning notice somewhere indicating that As of right now, this is my workaround: Instead of having Netlify build my repo, I instead build the website locally first, and then upload it manually with |
I'm happy to prep the PR to fix this in a similar way you did for the Vercel one @danielroe, but I'm also curious: Is there any way to opt-out of Nitro's magic here altogether? If not, is it worth spinning up a new feature request somewhere to make that a config flag? In this case, my workaround "solution" is basically just to prevent Nitro from being able to recognize netlify 🤔 |
Forwarded from downstream issue:
Environment
Reproduction
Works with dev OR build & preview: https://stackblitz.com/github/michaelvcolianna/nuxttest?file=nuxt.config.ts
Deploy, not working: https://sparkling-mandazi-64484f.netlify.app/test
Repo: https://github.com/michaelvcolianna/nuxttest
Edited to add a URL using
npm run generate
to illustrate the 404s: https://nuxt.mvcdev.net/Describe the bug
This feels like this is a Nuxt configuration thing. I guess it could be Netlify but wanted to check here first.
I'm experiencing an error similar to nuxt/nuxt#14817, but
npm run build && npm run preview
work fine locally and on Stackblitz. When deployed, though, either on Netlify or usingnpm run generate
and serving the dist folder, an error shows up.This is because the files don't exist. When building, the baseURL ("test" for now) is appended before the "_nuxt" part of the resource.
The Netlify deployment is looking for https://sparkling-mandazi-64484f.netlify.app/test/_nuxt/entry.624150a5.js, which is the MIME error because of the catchall serving it as a real page. It should be looking for https://sparkling-mandazi-64484f.netlify.app/_nuxt/entry.624150a5.js.
Serving from dist is looking for
localhost:8081/test/_nuxt/entry.a65c34ed.js
, which is a 404 since the SSG crawler doesn't create the file. It should be looking forlocalhost:8081/_nuxt/entry.a65c34ed.js
.(I know those file names aren't set in stone but hopefully they get the point across.)
Additional context
First, this issue happened prior to using the catchall. I tried a base Nuxt instance with the app.vue file, then converted that to use
<NuxtPage>
and madepages/index.vue
but switched to the catchall to show the MIME error instance. Without the catchall the JS files 404 because root cause is they don't exist in the requested location. (Plus, down the line, the final site will need the catchall anyway.)I've tried adjusting Nuxt config settings, like
app.buildAssetsDir
andvite.build.assetsDir
. In either case, it wouldn't let me use a relative path - since I wanted to remove the baseURL from the request I tried../
and just an empty string. I also tried adding "test" in there, but then it was looking for files in/test/test/_nuxt
.I've also tried adjusting stuff on the Netlify side. For serving after SSG, I've tried configuring aliases/etc. on the web server side.
I feel like this is a really simple solution I'm overlooking and someone will see it right away. I'm hoping it isn't put everything under the desired baseURL in the pages directory, but if that's the best way to achieve it then I'll do that. Thanks for any insight!
Logs
The text was updated successfully, but these errors were encountered: