나는 Angular에서 고전적인 문제가 있습니다. 코드를 축소 할 때 매개 변수 확장으로 인해 '알 수없는 공급자'가됩니다.각도 1.5, 겉으로보기에 부적합한 라인에서 오류를 찾는 엄격한 모드 annotation
ng-strict-di
지시어에 대해 읽었습니다. 몇 달 전에 알려줬으면합니다. 매개 변수와 함께 전달되는 문자열 등가물을 강제 적용합니다.
이
내가 지금 내 unminified 코드를 사용하여이 스택 트레이스를 얻을로 내 문제를 좁힐 수있었습니다 : 그래서 문제가 타사 라이브러리 것 같다 , 내가 댓글을 달았을 어디에 오류가 발생합니다 :ng.module('opentok', [])
.factory('OT', function() {
return OT;
})
.factory('OTSession', ['OT', '$rootScope',
function(OT, $rootScope) {
var OTSession = {
streams: [],
connections: [],
publishers: [],
init: function(apiKey, sessionId, token, cb) {
this.session = OT.initSession(apiKey, sessionId);
OTSession.session.on({
sessionConnected: function() {
OTSession.publishers.forEach(function(publisher) {
OTSession.session.publish(publisher);
});
},
streamCreated: function(event) {
//ERROR OCCURS ON THE LINE BELOW
$rootScope.$apply(function() {
OTSession.streams.push(event.stream);
});
},
streamDestroyed: function(event) {
$rootScope.$apply(function() {
OTSession.streams.splice(OTSession.streams.indexOf(event.stream), 1);
});
},
sessionDisconnected: function() {
$rootScope.$apply(function() {
OTSession.streams.splice(0, OTSession.streams.length);
OTSession.connections.splice(0, OTSession.connections.length);
});
},
connectionCreated: function(event) {
$rootScope.$apply(function() {
OTSession.connections.push(event.connection);
});
},
connectionDestroyed: function(event) {
$rootScope.$apply(function() {
OTSession.connections.splice(OTSession.connections.indexOf(event.connection), 1);
});
}
});
this.session.connect(token, function(err) {
if (cb) cb(err, OTSession.session);
});
this.trigger('init');
},
addPublisher: function(publisher) {
this.publishers.push(publisher);
this.trigger('otPublisherAdded');
}
};
OT.$.eventing(OTSession);
return OTSession;
}
])
모든 것이 순서대로 보이고 오류가 발생한 줄이 DI와 관련없는 것처럼 보입니다. 무엇이 잘못되었는지 눈치 채실 수 있습니까?
업데이트 줄을 OTSession.streams.push(event.stream);
으로 주석 처리하면 오류가 사라집니다. 이것은 배열로 객체를 밀어 넣는 것만 큼 이상하게 보입니다.
opentok 라이브러리 모듈 때문인지 모르겠다. 주입 의존성에 대한 또 다른 문제가 있다고 생각한다. 자세한 내용은 다음을 참조하십시오. http://stackoverflow.com/a/33494259/861206 하지만 앱의 어딘가에서는 매퍼가 삽입되지 않은 함수를 호출하므로 정의되지 않은 잘못된 함수로 함수가 매핑됩니다. 것처럼한다면 : .controller ("FirstController" [ "$ rootScope", "$ HTTP", "$ 필터"기능 ($ 범위, $ HTTP, $ 필터) { } ]) 을 $ scope는 컨트롤러 내부에서 응용 프로그램의 $ rootScope가됩니다. – rbinsztock
감사합니다. 문제는 주입 할 때 매핑이 잘못되었거나 누락되었다는 것입니다. 의존성이 주입되는 모든 단일 장소를 살펴보고 저를 구하기 위해 'ng-strict-di'를 추가하면 매핑이 올바르지 않은 곳을 찾아 낼 것입니다. 이것은 un-minified 코드에서 오류를 선택하게하지만 모든 종속성이 올바르게 맵핑되는 팩토리를 가리 킵니다. 위의 코드 줄을 주석으로 처리하면 오류가 사라집니다. 그것은 DI와 관련이없는 것처럼 보입니다. –
아니요, 게시 된 타사 코드에 문제가 없습니다. 'OTSession.streams.push (event.stream)'는 앱의 다른 부분에 간접적으로 영향을 미칠 수 있지만 그게 전부입니다. 오류가 말했듯이 문제는 일부 컨트롤러입니다. – estus