问题
Where is the public folder for a nextjs project?
I mean, is there somewhere where I can put favicon.png
, google site verification, manifest.json
, robots.txt
, etc. ?
回答1:
[2019-07-16] Next.js(canary) has a public/
folder
Create stuffs like public/favicon.png
, public/robots.txt
and that's all you need.
Checkout Document
回答2:
Static file serving (e.g.: images)
create a folder called static
in your project root directory. From your code you can then reference those files with /static/
URLs:
export default () => <img src="/static/my-image.png" alt="my image" />
Note: Don't name the static directory anything else. The name is required and is the only directory that Next.js uses for serving static assets.
for more read Docs
回答3:
According to this issue you could serve static files server side, just like this (source):
const { createServer } = require('http')
const { parse } = require('url')
const next = require('next')
const { join } = require('path')
const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
app.prepare().then(() => {
createServer((req, res) => {
const parsedUrl = parse(req.url, true)
const rootStaticFiles = ['/robots.txt', '/sitemap.xml', '/favicon.ico']
if (rootStaticFiles.indexOf(parsedUrl.pathname) > -1) {
const path = join(__dirname, 'static', parsedUrl.pathname)
app.serveStatic(req, res, path)
} else {
handle(req, res, parsedUrl)
}
}).listen(port, err => {
if (err) throw err
console.log(`> Ready on http://localhost:${port}`)
})
})
来源:https://stackoverflow.com/questions/54436021/nextjs-public-folder