部署带AdminJS面板的Node.js应用至Google Cloud遇只读文件系统错误
解决AdminJS部署到Google Cloud App Engine的只读文件系统错误
问题原因
Google Cloud App Engine的应用根目录是只读文件系统,AdminJS默认会在项目根目录生成.adminjs/.entry.js文件(用于打包自定义组件,比如你配置的dashboard),尝试写入只读目录就会触发EROFS错误。
解决方案
通过配置AdminJS的bundleDirectory选项,将生成的临时文件指向GAE唯一可写的/tmp目录:
修改AdminJS初始化代码
const admin = new AdminJS({ databases: [], // rootPath是浏览器访问AdminJS的路径,比如'/admin',不是文件路径 rootPath: '/admin', resources:[UsersResources, GuestResources, SalesResources, FinancesResources, TicketsResources, DestinationsResources, JadrolinijaTokenResources], dashboard:{ component: AdminJS.bundle(path.join(process.cwd(), './components/dashboard')) }, // 关键配置:指定打包文件输出到/tmp下的.adminjs目录 bundleDirectory: path.join('/tmp', '.adminjs') })
额外注意事项
- 确保自定义组件路径正确,
path.join(process.cwd(), './components/dashboard')能准确定位到组件文件 - GAE的
/tmp目录是临时存储,实例重启时会被清空,但AdminJS会在启动时重新生成.entry.js文件,不影响正常使用
内容的提问来源于stack exchange,提问作者Josip Marić
相关产品推荐
相关产品推荐

