AngularJS + 提供程序 + Webpack

AngularJS + Provider + Webpack

提问人:Desty 提问时间:3/27/2021 更新时间:3/27/2021 访问量:30

问:

有一个由 webpack 构建的 angularjs 应用程序(它在构建时也使用 babel-loader)。

有一个包含以下代码的 MessageProvider.js 文件:

const SERVER_SIDE_MESSAGE_PROVIDER = ['$injector', ($injector) => {

var localeJson = [];

this.loadLocale = (lang) => {
    ....
};

this.$get = () => {
    return {
        ....
    };
};
}];
export { SERVER_SIDE_MESSAGE_PROVIDER };

使用 webpack 成功构建应用程序后,浏览器中显示错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module *app name* due to:
TypeError: Cannot set property 'loadLocale' of undefined

指向线

this.loadLocale = (lang) => ....

你能告诉我如何解决这个问题吗?

javascript angularjs webpack ecmascript-6 这个

评论

0赞 Jack A. 3/27/2021
您如何注册 AngularJS?应该有一些代码,比如某处。SERVER_SIDE_MESSAGE_PROVIDERangular.service('name', SERVER_SIDE_MESSAGE_PROVIDER)
0赞 Desty 3/27/2021
@JackA。我像这样注册提供程序:angular.module('App', [uirouter]).provider('ServerSideMessage', SERVER_SIDE_MESSAGE_PROVIDER)
0赞 Jack A. 3/27/2021
好的,只是想确保您将其注册为提供商。在这种情况下,请参阅@brian60的答案。如前所述,箭头函数不能用作构造函数(因此它们没有上下文)。请参阅 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...this
0赞 Desty 3/27/2021
@JackA.是的,谢谢,它有帮助!

答:

0赞 bryan60 3/27/2021 #1

喜欢这个:

function($injector) {

没有箭头功能。this