我正在开发一个Angular项目,本地运行完美,但是当我部署到Divshot时,它会中断,并且会抛出一个'Unknown provider:iProvider < - 我错了。Angular.js'Unknown provider:iProvider < - i'生产中的错误
这是链接:Divshot development build
任何意见将非常感激。
我正在开发一个Angular项目,本地运行完美,但是当我部署到Divshot时,它会中断,并且会抛出一个'Unknown provider:iProvider < - 我错了。Angular.js'Unknown provider:iProvider < - i'生产中的错误
这是链接:Divshot development build
任何意见将非常感激。
这是因为Angular通过将函数字面转换为字符串并使用其参数名称来解析提供者名称。部署时,您可能正在缩小您的代码。因此,看起来像myCoolService
的东西将被缩小为i
或a
或其他东西。
你必须要解决这个问题: 1.使用数组语法 2.在你的构建中使用ngAnnotate或其他的东西来为你创建数组语法。
谢谢@AlexStack,确实是这个问题。 –
太棒了! :)我很感激你能否将我的答案标记为正确答案,以便我能够得到答案。 – AlexStack
我假设你的js代码已在生产minifized。您的服务提供商的标识符可能会重命名为未知。
我建议你在注入点添加你的提供者的字符串标识符。例如。
angular.module('example')
.controller(['$scope', 'YourServiceProvider', function($scope, YourServiceProvider) {
// ...
});
谢谢@ stanleyxu2005! –
我遇到了类似的问题。我正在缩小我的js,并使用ngAnnotate使代码可以安全地进行缩小。但是,ngAnnotate只能识别一定数量的模式,并且如果您创建了一个模式,您希望ngAnnotate无法识别注入,您必须通过@ngInject告诉它处理注入。不知道这是否是你的问题,但它可能有帮助。 – DavidA