繁体   English   中英

如何在 Vercel(使用 Next.js)上扫描生产目录?

[英]How to scan directories on production on Vercel (with Next.js)?

当通过 URL(例如:mydomain.com/sitemap.xml)访问时,我开发了一个 JS 脚本作为 sitemap.xml 工作,它将列出我的项目的页面。 在开发( yarn dev )上运行时,它工作正常,在我的电脑上构建和启动后运行( yarn build & yarn start )也能工作。 问题是在 Vercel 上它不起作用,错误是:

[GET] /sitemap.xml
19:39:16:85
Function Status:
None
Edge Status:
500
Duration:
146.30 ms
Init Duration:
446.50 ms
Memory Used:
80 MB
info  - Loaded env from /var/task/.env.production
info  - Loaded env from /var/task/.env
2021-11-18T19:39:17.673Z    68ecb71f-eede-4cbd-81a9-5c677f11e556    ERROR   Error: ENOENT: no such file or directory, scandir '/var/task/.next/server/pages/projects'
    at Object.readdirSync (fs.js:1047:3)
    at getServerSideProps (/var/task/.next/server/pages/sitemap.xml.js:38:56)
    at Object.renderToHTML (/var/task/node_modules/next/dist/server/render.js:504:26)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async doRender (/var/task/node_modules/next/dist/server/next-server.js:1428:38)
    at async /var/task/node_modules/next/dist/server/next-server.js:1523:28
    at async /var/task/node_modules/next/dist/server/response-cache.js:63:36 {
  errno: -2,
  syscall: 'scandir',
  path: '/var/task/.next/server/pages/projects',
  page: '/sitemap.xml'
}
RequestId: 68ecb71f-eede-4cbd-81a9-5c677f11e556 Error: Runtime exited with error: exit status 1
Runtime.ExitError

我的sitemap.xml.js上的代码片段是:

const staticPagesProjects = fs
                .readdirSync({
                    development: 'src/pages/projects',
                    production: __dirname + '/projects',
                }[process.env.NODE_ENV])
                .filter((staticPagesProjects) => {
                    return regex.test(staticPagesProjects) && (staticPagesProjects != "index.html") && (staticPagesProjects != "404.html") && (staticPagesProjects != "500.html");
                })
                .map((staticPagePath) => {
                    return `${baseUrl}/projects/${staticPagePath.replace(".html", "")}`;
                });

谁能告诉我路径有什么问题以及为什么它在我的电脑上有效但在 Vercel 上无效? 谢谢!

我遇到了同样的问题,不幸的是我也没有找到解决方案,但我找到了一种可以提供帮助的方法:

对于 static 页面,我将它们手动添加到数组中。

对于动态页面,它通过连接到数据库并获取数组中的页面来工作。

现在已经一个月了,你找到解决办法了吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM