首页 > 解决方案 > AngularJS 参数“fn”不是函数,未定义

问题描述

我对 AngularJS 1.6 有问题,错误消息说:

错误:[ng:areq] 参数“fn”不是函数,未定义

我知道这是我的 testService 的问题,请帮助查找问题

./app.js

import angular from 'angular';
import uiRouter from 'angular-ui-router';
import Components from './components/components';
import { TestComponent } from './test/test.component';
import { ApiConstant } from './constants';
import { TestService } from './services';

angular.module('myApp', [
    uiRouter,
    Components
  ])
  .component('testPage', TestComponent)
  .service('TestService', TestService)
  .constant('ApiConstant', ApiConstant)
  .config(($stateProvider) => {
    'ngInject';
    $stateProvider
      .state('home', {
        url: '',
        template: '<test-page></test-page>'
      });
  });

./services/test.service.js

export const TestService = (ApiConstant) => {
  'ngInject';

  this.test = function() {
    console.log(ApiConstant);
    return ApiConstant;
  };
};

./services/index.js

export * from './test.service';

./constants/api.js

export const ApiConstant = {
  url: 'test'
};

./constants/index.js

export * from './api.constant';

./components/test.component.js

import template from './test.component.html';
import controller from './test.controller';

export const TestComponent = {
  template,
  controller
};

./components/test.controller.js

export default function TestController($scope, ApiConstant, TestService) {
  'ngInject';
  console.log(ApiConstant.url);
  console.log(TestService.test());
}

所以 ApiConstant 工作正常,但是 TestService 产生错误,当我从控制器中删除 TestService 时它工作正常,它会是什么?

标签: javascriptangularjs

解决方案


模块依赖项应该是字符串:

错误

angular.module('myApp', [
    uiRouter,
    Components
  ])

应该:

angular.module('myApp', [
    'uiRouter',
    'Components'
  ])

推荐阅读