一个基于 next.js 的项目使用 JMeter 在 docker 容器中进行压力测试,当并发数过高时,会出现以下错误,但该目录确实是存在的,并且随着并发数变高报错也变多。正常访问就不会出现。
2023-12-25 07:47 +00:00: Error: ENOENT: no such file or directory, scandir '/app/packages/eshop/public/locales/cn'
at Object.readdirSync (node:fs:1405:3)
at getLocaleNamespaces (/app/node_modules/next-i18next/dist/commonjs/config/createConfig.js:214:16)
at /app/node_modules/next-i18next/dist/commonjs/config/createConfig.js:231:20
at Array.map (<anonymous>)
at getNamespaces (/app/node_modules/next-i18next/dist/commonjs/config/createConfig.js:230:44)
at createConfig (/app/node_modules/next-i18next/dist/commonjs/config/createConfig.js:271:29)
at _callee$ (/app/node_modules/next-i18next/dist/commonjs/serverSideTranslations.js:201:53)
at tryCatch (/app/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:44:17)
at Generator.<anonymous> (/app/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:125:22)
at Generator.next (/app/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:69:21) {
errno: -2,
syscall: 'scandir',
path: '/app/packages/eshop/public/locales/cn'
}
报错指向的是用的一个 next.js 的多语言库 next-i18next ,它在每次页面刷新的时候都会调用 fs.readdirSync
读取本地多语言 json 文件。
我也试过在容器里面大量调用(定时器模拟) fs.readdirSync
也没出现报错。
实在不知道是什么原因引起的...有了解的小伙伴吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.