Page MenuHomePhabricator

TypeError: mw.ForeignApi is not a constructor when using minerva skin (due to missing dependency to `mediawiki.ForeignApi`)
Closed, InvalidPublic

Description

In the process of developing a user script, I found that, when using the minerva skin (and no other skin), calling api = new mw.ForeignApi( '//meta.wikimedia.org/w/api.php' );doesn't work, even though it does for other skins. The script loads mediawiki.api, and a previous call to api = new mw.Api(); worked fine

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

We use this module on Minerva for the Nearby page. Can you provide more details about the bug you are seeing. What doesn't work? Are you getting errors in JS console? What response do you get for your network request?

Recreated at https://en.wikipedia.org/wiki/User:DannyS712_test/demo.js - this happens before any network request is made. JS console:

Uncaught TypeError: mw.ForeignApi is not a constructor
    at HTMLDocument.<anonymous> (index.php?title=User:DannyS712_test/demo.js&action=raw&ctype=text/javascript:4)
    at mightThrow (load.php?lang=en&modules=ext.centralNotice.choiceData%2Cdisplay%2CgeoIP%2CimpressionDiet%2CkvStore%2CstartUp|ext.centralauth.centralautologin.clearcookie|ext.cx.eventlogging.campaigns|ext.eventLogging%2CnavigationTiming%2Cpopups%2CwikimediaEvents|ext.uls.common%2Ccompactlinks%2Cinit%2Cinterface%2Cpreferences%2Cwebfonts|ext.visualEditor.desktopArticleTarget.init|ext.visualEditor.progressBarWidget%2CsupportCheck%2CtargetLoader%2CtempWikitextEditorWidget%2Ctrack%2Cve|ext.wikimediaEvents.loggedin|jquery%2Coojs%2Coojs-router%2Csite|jquery.accessKeyLabel%2Cclient%2Ccookie%2CtextSelection%2Cthrottle-debounce|jquery.uls.data|mediawiki.RegExp%2CString%2CTitle%2CUri%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cnotify%2Crouter%2Cstorage%2Ctemplate%2Cuser%2Cutil%2Cviewport|mediawiki.editfont.styles|mediawiki.libs.pluralruleparser|mediawiki.page.startup|mediawiki.template.mustache%2Cregexp|mediawiki.ui.anchor|mmv.bootstrap%2Chead|mmv.bootstrap.autostart|mobile.messageBox.styles|mobile.pagelist.styles|mobile.pagesummary.styles|mobile.startup|mobile.startup.images|mobile.startup.images.variants|mw.externalguidance.init|skins.minerva.icons.images.scripts|skins.minerva.icons.images.scripts.misc|skins.minerva.icons.page.issues.default.color|skins.minerva.icons.page.issues.medium.color|skins.minerva.icons.page.issues.uncolored|skins.minerva.mainMenu.styles|skins.minerva.options%2Cscripts%2Ctalk%2Cwatchstar|skins.minerva.options.share.icon|user.defaults&skin=minerva&version=0lv8430:185)
    at process (load.php?lang=en&modules=ext.centralNotice.choiceData%2Cdisplay%2CgeoIP%2CimpressionDiet%2CkvStore%2CstartUp|ext.centralauth.centralautologin.clearcookie|ext.cx.eventlogging.campaigns|ext.eventLogging%2CnavigationTiming%2Cpopups%2CwikimediaEvents|ext.uls.common%2Ccompactlinks%2Cinit%2Cinterface%2Cpreferences%2Cwebfonts|ext.visualEditor.desktopArticleTarget.init|ext.visualEditor.progressBarWidget%2CsupportCheck%2CtargetLoader%2CtempWikitextEditorWidget%2Ctrack%2Cve|ext.wikimediaEvents.loggedin|jquery%2Coojs%2Coojs-router%2Csite|jquery.accessKeyLabel%2Cclient%2Ccookie%2CtextSelection%2Cthrottle-debounce|jquery.uls.data|mediawiki.RegExp%2CString%2CTitle%2CUri%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cnotify%2Crouter%2Cstorage%2Ctemplate%2Cuser%2Cutil%2Cviewport|mediawiki.editfont.styles|mediawiki.libs.pluralruleparser|mediawiki.page.startup|mediawiki.template.mustache%2Cregexp|mediawiki.ui.anchor|mmv.bootstrap%2Chead|mmv.bootstrap.autostart|mobile.messageBox.styles|mobile.pagelist.styles|mobile.pagesummary.styles|mobile.startup|mobile.startup.images|mobile.startup.images.variants|mw.externalguidance.init|skins.minerva.icons.images.scripts|skins.minerva.icons.images.scripts.misc|skins.minerva.icons.page.issues.default.color|skins.minerva.icons.page.issues.medium.color|skins.minerva.icons.page.issues.uncolored|skins.minerva.mainMenu.styles|skins.minerva.options%2Cscripts%2Ctalk%2Cwatchstar|skins.minerva.options.share.icon|user.defaults&skin=minerva&version=0lv8430:186)

mw.ForeignApi is a separate module, that needs to be loaded individually. Adding a dependency to mediawiki.ForeignApi should make it work properly.

mw.ForeignApi is a separate module, that needs to be loaded individually. Adding a dependency to mediawiki.ForeignApi should make it work properly.

Indeed, that fixed it. For some reason every other skin already loaded it I guess. Thanks for the help!

Aklapper renamed this task from TypeError: mw.ForeignApi is not a constructor - only when using minerva skin to TypeError: mw.ForeignApi is not a constructor when using minerva skin (due to missing dependency to `mediawiki.ForeignApi`).Aug 10 2019, 11:36 AM