Cannot use import statement outside a module
最近本地docker构建node项目时报错
Cannot use import statement outside a module”,”event”:”uncaughtException
。排查解决后,这里mark下。
环境说明
- NodeJS版本为
v12
- 整个项目是
CommonJS
规范
错误含义
根据错误栈最后查到是node_modules/axios/lib/core/buildFullPath.js
位置。本地开发环境下查看文件并没有问题,但进入docker容器中查看果然该文件中采用的ES import写法。由此确定根本问题。
原因追溯
docker构建时package.lock文件及Node版本都是确定的,按理应该是与开发环境高度一致,但现在出现了不一致,只有可能是docker构建存在缓存之类的。
查看历史发现之前我曾安装过axios@latest即v1版本,因为安装时不指定版本即会走最新版。查看v1版发布包,发现内容已经变成了ES版本,所以大概原因应该是这样,docker构建环节的问题。查询发现
docker builder prune
可以清除构建缓存。因此尝试下,重新构建发现OK。