Google App Engine配置type为module仍报import语句错误
问题原因与解决方案
你遇到的报错本质是GAE运行环境将你的代码识别为CommonJS模块,不支持ES模块的import语法,即便本地配置正常,也大概率是GAE部署环节的配置遗漏导致,按优先级排查以下问题:
1. 检查GAE运行时的Node.js版本
ES模块的"type": "module"配置是Node.js v13.2.0之后才正式稳定支持的,若你GAE使用的 runtime 版本低于该值会直接触发报错。
请检查项目根目录下的app.yaml配置,确保runtime指定为14以上的LTS版本,示例正确配置:
runtime: nodejs18 # 推荐使用16/18/20等受支持的LTS版本
2. 检查.gcloudignore配置
很多开发者会在.gcloudignore中错误加入package.json匹配规则,导致部署时GAE环境没有拿到你的package.json文件,自然无法识别"type": "module"配置,只能默认将.js文件当做CommonJS解析。
打开.gcloudignore文件,删除所有匹配package.json的规则,确保该文件会被上传到GAE环境。
3. 兜底兼容方案
如果上述排查都没有解决问题,可以直接将所有使用ES模块语法的.js文件后缀改为.mjs,Node.js会强制将.mjs文件识别为ES模块,不需要依赖package.json的"type"配置即可正常运行。
内容的提问来源于stack exchange,提问作者Sam Dean
相关产品推荐
相关产品推荐

