解决模块化JS项目调用google-play-scraper出现TypeError: X is not a function错误
解决ES模块(.mjs)中使用google-play-scraper时
gplay.app is not a function的错误 解决方案1:使用默认导入
直接导入模块的默认导出,这是最简洁的方式:
import gplay from 'google-play-scraper'; gplay.app({appId: 'com.google.android.apps.translate'}) .then(console.log, console.log);
解决方案2:通过命名空间访问默认导出
如果必须使用import * as的命名空间导入,需要通过default属性访问核心方法:
import * as gplay from 'google-play-scraper'; gplay.default.app({appId: 'com.google.android.apps.translate'}) .then(console.log, console.log);
问题原因
google-play-scraper的ES模块导出逻辑和CommonJS不同:
- CommonJS的
require()会自动把模块的默认导出作为返回值,所以require('google-play-scraper')直接拿到包含app方法的对象。 - ES模块中
import * as gplay会将所有导出(包括默认导出)封装到一个命名空间对象里,默认导出被放在default属性下,因此直接调用gplay.app会找不到对应方法。
内容的提问来源于stack exchange,提问作者mcgtrt
相关产品推荐
相关产品推荐

