2015-09-25 18 views
1

我正在开发一个Angular项目,本地运行完美,但是当我部署到Divshot时,它会中断,并且会抛出一个'Unknown provider:iProvider < - 我错了。Angular.js'Unknown provider:iProvider < - i'生产中的错误

这是链接:Divshot development build

任何意见将非常感激。

+0

我遇到了类似的问题。我正在缩小我的js,并使用ngAnnotate使代码可以安全地进行缩小。但是,ngAnnotate只能识别一定数量的模式,并且如果您创建了一个模式,您希望ngAnnotate无法识别注入,您必须通过@ngInject告诉它处理注入。不知道这是否是你的问题,但它可能有帮助。 – DavidA

回答

3

这是因为Angular通过将函数字面转换为字符串并使用其参数名称来解析提供者名称。部署时,您可能正在缩小您的代码。因此,看起来像myCoolService的东西将被缩小为ia或其他东西。

你必须要解决这个问题: 1.使用数组语法 2.在你的构建中使用ngAnnotate或其他的东西来为你创建数组语法。

阅读微小的部分上https://docs.angularjs.org/tutorial/step_05

+0

谢谢@AlexStack,确实是这个问题。 –

+0

太棒了! :)我很感激你能否将我的答案标记为正确答案,以便我能够得到答案。 – AlexStack

1

我假设你的js代码已在生产minifized。您的服务提供商的标识符可能会重命名为未知。

我建议你在注入点添加你的提供者的字符串标识符。例如。

angular.module('example') 
    .controller(['$scope', 'YourServiceProvider', function($scope, YourServiceProvider) { 
    // ... 
    }); 
+0

谢谢@ stanleyxu2005! –