2017-03-01 3 views
0

코딩에 익숙하지 않지만 Gulp를 성공적으로 몇 번 사용했기 때문에 내가 잘못하고 있는지 확실하지 않습니다. 이 문제를 스스로 해결하려고 시도하면서 node_modules를 삭제하고 다시 설치하고 최신 CDN을 업데이트 한 다음 (일시적으로) js 및 css의 축소를 비활성화하고 내 파일 경로를 이중으로 올바르게 확인했습니다. 또한 Gulp를 사용하기 전에 스크립트에 대한 모든 파일 경로가 index.html에 하드 코드되어 잘 작동했습니다.내 IDE에서 꿀꺽 꿀꺽하게 컴파일되지만 nodemon을 사용하여 localhost를 볼 때 사이트가 깨집니다.

현재 꿀꺽 꿀꺽하는 소리가 내 IDE (원자)에서 컴파일되는 것 같지만, nodemon을 사용하고 localhost로 이동하면 내 사이트가 손상됩니다.

GET http://localhost:5000/bundle.css localhost/:23 
GET http://localhost:5000/bundle.js angular.js:38 
Uncaught Error: [$injector:modulerr] 

Here's what my file structure looks like

을 그리고 여기 내 코드입니다 : 오류 관리자 나이 제공 또한, 나는 컨트롤러와 서비스의 decloration의 예를 제공하도록 요청 받았다

//index.html 

<!DOCTYPE html> 
<html ng-app="app"> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="./bundle.css" media="screen" title="no title"> 
    <title></title> 
    </head> 

    <body> 
    <ui-view></ui-view> 

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.4.2/angular-ui-router.js"></script> 
    <script src="./bundle.js"></script> 

    </body> 

</html> 

//gulpfile.js 
var gulp = require('gulp'); 
var concat = require('gulp-concat'); 
var sass = require('gulp-sass'); 
var annotate = require('gulp-ng-annotate'); 

var uglify = require('gulp-uglify'); 
var rename = require('gulp-rename'); 
var cssmin = require('gulp-cssmin'); 
var htmlmin = require('gulp-htmlmin'); 
var watch = require('gulp-watch'); 

var paths = { 
    jsSource: ['./public/js/**/*.js'], 
    sassSource: ['./public/styles/**/*.scss'], 
    indexSource: ['./public/index.html'], 
    routesSource: ['./public/routes/**/*.html'] 
}; 

gulp.task('sass', function() { 
return gulp.src(paths.sassSource) 
    .pipe(sass()) 
    .pipe(concat('bundle.css')) 
    .pipe(gulp.dest('./dist')); 
}); 

gulp.task('js', function() { 
    return gulp.src(paths.jsSource) 
     .pipe(concat('bundle.js')) 
     // .pipe(annotate()) 
     // .pipe(uglify()) 
     // .pipe(rename({extname: ".min.js"})) 
     .pipe(gulp.dest('./dist')) 
}); 

gulp.task('routes', function() { 
    gulp.src(paths.routesSource) 
     .pipe(htmlmin({collapseWhitespace: true})) 
     .pipe(gulp.dest('./dist/routes')) 
}) 

gulp.task('index', function() { 
    gulp.src(paths.indexSource) 
     .pipe(htmlmin({collapseWhitespace: true})) 
     .pipe(gulp.dest('./dist')) 
}) 

gulp.task('watch', function() { 
    gulp.watch(paths.jsSource, ['js']); 
    gulp.watch(paths.sassSource, ['sass']); 
    gulp.watch(paths.indexSource, ['index']); 
    gulp.watch(paths.routesSource, ['routes']); 
}); 

gulp.task('default', ['js', 'sass', 'watch', 'index' 
]); 

.

//homeCtrl 
angular.module('app') 
    .controller('homeCtrl', function ($scope, $state, mainService, homeService, user) { 

    $scope.user = user; 

    $scope.addpo = function (ponum) { 
    homeService.addpo(ponum).then(function (response) { 
     alert("PO added successfully"); 
     $state.reload('home'); 
    }) 
    }; 
//homeService 
angular.module('app') 
.service('homeService', function ($http) { 
    this.addpo = function (ponumber) { 
    return $http ({ 
     method: 'POST', 
     url: '/api/checkin', 
     data: { 
     ponumber: ponumber, 
     checkpoint_id: 1 
     } 
    }).then(function (response) { 
     return response.data; 
    }); 
}; 

}); 
+0

ng-annotate 당신에게 있습니까 컨트롤러 및 서비스를 사용할 수 있습니까? 이런 종류의 오류가 발생할 수 있습니다. 'Uncaught Error : [$ injector : modulerr]'는 의존성을 해결할 수 없음을 나타냅니다. 당신의 컨트롤러와 서비스에 대한 선언의 예를 게시하십시오. 그것은 당신을 돕기 위해 유용 할 것입니다. – lealceldeiro

+0

@lealceldeiro 빠른 답장을 보내 주셔서 감사합니다! 명확하게하기 위해, Gulp를 사용하기 전에 모든 것이 올바르게 작동했지만 제어기가 정확하게 주입되지 않을 가능성이 있습니다. 그렇다면, 나는 완전히 수정 작업을 시작할 것입니다. –

+0

예, 가능합니다. 파일을 축소하기 전에 _ "주입"하지 않아도 오류가 발생하지 않습니다. 축소 이후에만 오류가 발생합니다. 이것은 AngularJS의 주입 시스템이 어떻게 작동하기 때문입니다. Controller ('myCtrl', function (someService) {// ...}); ' – lealceldeiro

답변

0

교체

//homeCtrl 
angular.module('app') 
    .controller('homeCtrl', function ($scope, $state, mainService, homeService, user) { 
//... 

//homeCtrl 
angular.module('app') 
    .controller('homeCtrl', ['$scope', '$state', 'mainService', 'homeService', 'user', function ($scope, $state, mainService, homeService, user) { 
//... 

참고 )

전에 이제 끝 ]에 브래킷을 닫아야 할,과 동일한 작업을 수행 영원히 y 컨트롤러 및 서비스를 프로젝트에 종속시킵니다.

이렇게하는 다른 방법이 있지만 최종 결과는 같습니다. 당신은 $injector 서비스의 공식 문서에

그것을 참조 할 수 있습니다 ... 또는 당신은 그들의 의존성 제대로 _ "주입"_

+0

나는 이것이 당신이 언급하자마자 발사했다. 그러나 나는 그 문제를 해결할 수 없었다. 하루가 끝날 무렵 난 문제를 격리하려고 애쓰는 아주 기본적인 앱을 만들었습니다. 컨트롤러와 서비스에 들어가 자마자 [$ injector : modulerr], 그 뒤에 ng-app라는 이름이옵니다. 위의 예제에서 "app"이지만 이름을 변경 했으므로 houndApp. [$ injector : modulerr] 오류로 인해 모듈 houndApp을 인스턴스화하지 못했습니다. [$ injector : nomod] 모듈 'houndApp'을 사용할 수 없습니다! ' –

+0

하지만 ....이 오류가 'Error : [$ injector : nomod]'houndApp '모듈을 사용할 수 없다고 말하면주의해야합니다.'아마도 모듈을 의미합니다. ''houndApp '는 찾을 수 없습니다. 'ng-app' 지시자는 (맞춤법 오류로 인해,'js' 파일이나 다른 어떤 이슈도 가져 오지 않기 때문에) 그것을 찾으려고합니다. 내가 너라면 나도 그 모든 세부 사항을 두 번 확인해. – lealceldeiro

+0

여기 비슷한 솔루션으로이 주제와 관련된 몇 가지 질문이 있습니다. http://stackoverflow.com/questions/41002441/angular-depandency-problems-at-minify-compiling 및 http://stackoverflow.com/questions/40639922/ angularjs-script-doesnt-work-after-deployment-it-giving-error-injectorunpr / – lealceldeiro