2014-07-23 5 views
2

저는 Mean.io를 사용중인 응용 프로그램에 사용하려고합니다. 기본적으로 원래 구성 파일을 변경하지 않았으며이 응용 프로그램을 시작할 때 heroku 모드에서 dist 파일을 정확하게 집계하지 않고 있습니다.Mean.io의 AssetManager가 프로덕션 모드에서 작동하지 않습니다.

"자원로드 실패 : 서버가 404 (찾을 수 없음) http : //****.herokuapp의 상태로 응답했습니다. COM/bower_components/동일

는 JS 파일에 적용되는 관련 파일과 같은 모양/CSS/dist.min.css "을"건설 :. Assets.json : {

반대로

var assets = assetmanager.process({ 
    assets: require('./assets.json'), 
    debug: process.env.NODE_ENV !== 'development', 
    webroot: /public\/|packages\//g 
}); 

:

grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    assets: grunt.file.readJSON('config/assets.json'), 
    // later on 
      uglify: { 
     core: { 
      options: { 
       mangle: false 
      }, 
      files: '<%= assets.core.js %>' 
     } 
    }, 
    csslint: { 
     options: { 
      csslintrc: '.csslintrc' 
     }, 
     src: paths.css 
    }, 
    cssmin: { 
     core: { 
      files: '<%= assets.core.css %>' 
     } 
    }, 

내가 내 express.js에서 assetmanager 객체가 파일을 변경하는 것처럼이 개발 오류 대 생산입니다 볼 수 있습니다 내 gruntfile 내에서

"core": { 
    "css": { 
     "bower_components/build/css/dist.min.css": [ 
      "bower_components/met_theme/global/css/components.css" 
     ] 
    }, 
    "js": { 
     "bower_components/build/js/dist.min.js": [ 

      "bower_components/angular/angular.js", 
      "bower_components/angular-mocks/angular-mocks.js", 
      "bower_components/angular-cookies/angular-cookies.js", 
      "bower_components/angular-resource/angular-resource.js", 
      "bower_components/angular-ui-router/release/angular-ui-router.js", 
      "bower_components/angular-bootstrap/ui-bootstrap.js", 
      "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", 
      "bower_components/met_theme/global/scripts/datatable.js", 
      "bower_components/met_theme/global/scripts/metronic.js" 
     ] 
    } 
} 
} 

to! == 'production'은 나에게 같은 문제를 로컬로 준다. 나는 파일을 로딩하는 방법에 익숙하지 않고 해결책을 찾지 못해서 답을 줄 수 있거나 올바른 방향으로 나를 가리킬 수있는 사람이 많이 감사 할 것입니다.

+0

heroku에서 NODE_ENV를 (를) 설정 했습니까? 'heroku config : set NODE_ENV = production' –

+0

그래, 내가 말했듯이, assetmanager가 dist 파일을 만드는 방법과 관련이있다. –

+0

나는 똑같은 문제가있다 –

답변

1

우리는 제품을 출시하는 마지막 단계에 있으며 실제로 일부 집계를 수행하는 것이 중요했습니다.

전혀 쉬운 일이 아니 었습니다.

할 수있는 가장 간단한 방법은이 NODE_ENV = 생산 영원히 server.js

을 시작이다 그러나 그것은 단지 우리를 위해 일을하고 콘솔에서 오류를 때렸다하지 않았다.

우리 assets.json가 gruntfile이 깨끗한 생산을 위해이 단계의

"bower_components/jquery/dist/jquery.min.js", 
"bower_components/socket.io-client/socket.io.js", 
"bower_components/fullcalendar/fullcalendar.min.js", 
"bower_components/tinymce/tinymce.min.js", 
"bower_components/select2/select2.min.js", 
"bower_components/angular/angular.js",   
"bower_components/angular-ui-calendar/src/calendar.js", 
"bower_components/checklist-model/checklist-model.js", 
"bower_components/angular-ui-tinymce/src/tinymce.js", 
"bower_components/angular-elastic/elastic.js", 
"bower_components/angular-ui-select2/src/select2.js", 
"bower_components/angular-ui-utils/ui-utils.min.js", 
"bower_components/angular-ui-router/release/angular-ui-router.min.js", 
"bower_components/angular-bootstrap/ui-bootstrap.min.js", 
"bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js", 
"bower_components/ng-file-upload/angular-file-upload.min.js", 

세트 같은 형태, 다음 cssmin을 추하게합니다.

나는 어쨌든, 어느 접근 방식은 정말 우리를 위해 일이

#!/bin/sh 
grunt clean 
grunt concat 
grunt uglify 
grunt cssmin 
NODE_ENV=envname forever --uid "appname" -a start server.js 

같은 스크립트 모드를 선호합니다. 나는 uglification이 올바른 순서로 물건을 적재하는 것에 왔을 때 f ** ked를 완료했다고 생각하고, 우리는 많은 콘솔 오류로 끝났습니다.

우리가해야 할 일은 jquery 의존성과 각도 의존성으로 나누기 위해 assets.json을 다시 작성한 다음 jquery 종속성과 각도 종속성을로드하는 것입니다. 어쩌면 우리가 사용하고있는 모순되는 몇몇 라이브러리가 있었고 그 문제를 일으켰습니다.

위 작업이 더 효과적 일지라도 집계에 대한 추가 문제가 있습니다. 예를 들어 => tinymce는 이제 플러그인 폴더, 테마 폴더 및 스킨 폴더에 대해 bower_components/dist/js를보고 있음을 알려줍니다.

그래서 우리는 분명히

#!/bin/sh 
grunt clean 
grunt concat 
grunt uglify 
grunt cssmin 
cp -r bower_components/tinymce/plugins bower_components/build/js/ 
cp -r bower_components/tinymce/skins bower_components/build/js/ 
cp -r bower_components/tinymce/themes bower_components/build/js/ 
NODE_ENV=envname forever --uid "appname" -a start server.js 

하지 꽤 스크립트로 변경했다, 그러나 그것은 우리를 위해 일 것입니다. NODE_ENV = 생산, 확실히 그 트릭을 독자적으로하지 않았습니다.

관련 문제