phantomjs에서 특정 패키지를 못 찾는 오류
PhantomJS 1.9.7 (Mac OS X) ERROR
Error: [$injector:nomod] Module 'mean.admin' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.2.20/$injector/nomod?p0=mean.admin
at /Users/terzeron/workspace-js/mango_dev/bower_components/angular/angular.js:1651
해당 패키지의 public 디렉토리에 모듈을 선언하는 코드를 추가해줌
packages/admin/public/admin.js
'use strict';
angular.module('mean.admin', []);
라우팅 로직에서 예외가 발생하는 경우
throw new Error(msg);
^
Error: Route.post() requires callback functions but got a [object Undefined]
at /Users/terzeron/workspace-js/mango_dev/node_modules/express/lib/router/route.js:162:15
- 특정 라우트에 대응되는 컨트롤러와 그 메소드가 정의되어 있지 않아서 발생하는 문제
- 일단 route 파일을 수정하거나 컨트롤러를 제대로 구현할 것
컨트롤러가 정의되지 않았다고 오류가 발생하는 경우
Error: [ng:areq] Argument 'xxxCtrl' is not a function, got undefined
- 모듈 선언부에서 매번 초기화하고 있는 경우도 있음
- 모듈 선언부에서 앱(패키지) 이름을 잘못 기술하고 있음
- controller 정의를 포함한 파일이 호출되지 않고 있음
- angular.module(‘ 모듈이름’, )으로 기술되어 있다면 의존성 부분을 제거할 것
Unknown Provider
Error: [$injector:unpr] Unknown provider: KeywordProvider <- Keyword
- service가 정의되어 있지 않음 →services/패키지.js
- 모듈 의존성이 원인일 수 있음
- init.js가 하위 모듈(패키지)의 app.js에서 지정된 anguardependencies를 잘 가지고 오는가 확인할 것
목록 API 호출시 404 Not Found 에러 발생
GET http://dev-server.domain.com:3000/admin/keywords 404 (Not Found)
여러 가지 가능성이 존재함
- 서버 라우트 정의에 누락되어 있거나,
- server/route의 설정에 url이 절대 경로가 아니어서 발생했을 수 있음 (위 경우 /admin/keywords로 server route 정의해야 함)
모듈 인스턴스 만드는 과정에서 파라미터 중복
Uncaught Error: [$injector:modulerr] Failed to instantiate module mean due to: Error: [$injector:modulerr] Failed to instantiate module mean.admin due to: Error: Duplicate parameter name 'keywordId' in pattern '/keywords/:keywordId/details/keywords......
- state에 .이 포함되어 있으면 상속관계임 그러므로 url이 중복될 수 있음
특정 객체 모델의 _id 변수의 값을 얻어오지 못하는 경우
CastError: Cast to ObjectId failed for value "details" at path "_id"
- services의 $resource method의 url 경로와 파라미터를 조정해볼 것
- url 패턴이 유사하다면 server/route의 우선순위를 조정할 필요가 있음
resource 반환 결과가 기대와 다른 경우
Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an object but got an array
객체 하나가 반환되기를 기대했는데 배열로 반환된 것이므로 로직을 살펴볼 것
모델 중복 정의 오류
OverwriteModelError Cannot overwrite Network model once compiled
디비 스키마가 중복 정의되어 있음
리소스 팩토리의 undefined 오류
undefined is not a function (in resource factory)
- 해당 팩토리 함수가 호출되지 않은 경우라면 정의하면 됨
- 이미 정의되어 있는데도 발생한 거라면 같은 이름의 리소스 팩토리가 중복 정의되어 있는지 확인해볼 것
POST verb에 대한 404 Not Found 오류
POST http://dev-server.domain.com:3000/notices/53df1643f29ca39e55995557 404 (Not Found)
- 일반적으로 리소스를 서버에 생성할 때는 POST, 변경할 때에는 PUT을 verb로 사용하게 되는데, 그래서 서버 라우트 로직에 POST와 PUT을 따로 선언해줘야 함. 이 경우 POST 대신에 PUT만 정의되어 있는지 확인해볼 필요가 있음
- 반대로, PUT을 쓰는 경우라면, services의 resource factory에서 update에 대해 put으로 변경해주는 추가 코드가 필요하다.
특정 모듈을 주입하지 못하는 에러
Uncaught Error: [$injector:modulerr] Failed to instantiate module mean due to:
Error: [$injector:modulerr] Failed to instantiate module angularFileUpload due to:
Error: [$injector:nomod] Module 'angularFileUpload' is not available! You either missp......2)
npm install로 해당 모듈을 설치해준다.