2

作成中のアプリに Mean.io を利用しようとしていますが、基本的に元の構成ファイルから何も変更していません。このアプリを本番モードで heroku に起動すると、dist ファイルが集約されません。正しく、私に与えます

「リソースの読み込みに失敗しました: サーバーは 404 (見つかりません) のステータスで応答しました http://****.herokuapp.com/bower_components/build/css/dist.min.css」"

同じことがJSファイルにも当てはまります。関連ファイルは次のようになります。 Assets.json: {

"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"
        ]
    }
}
}

私のうなり声の中:

    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 オブジェクトを次のように変更したかのように、これは運用と開発のエラーであることがわかります。

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

!== 'production' とは対照的に、ローカルで同じ問題が発生します。私はファイルをロードするこの方法にあまり慣れておらず、解決策を見つけることができないようです。答えを提供したり、正しい方向に向けたりできる人は誰でも大歓迎です。

4

1 に答える 1

1

私たちは製品の立ち上げの最終段階にあり、実際にいくつかの集計を行うことが不可欠でした.

それはまったく簡単ではなかったことがわかりました。

最も簡単な方法は、NODE_ENV=production forever start server.js です。

しかし、それは私たちにとってはうまくいかず、コンソールにエラーを吐き出しました.

assets.json は次のようになります

"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",

gruntfile が本番用に持っている一連のステップは、clean、uglify、cssmin です。

私はこのようなスクリプトモードを好みます

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

とにかく、どちらのアプローチも実際にはうまくいきませんでした。物事を正しい順序でロードすることになると、醜化が完了したと思います。そして、コンソールエラーがたくさん発生しました。

私たちがしなければならなかったことは、assets.json を書き直して、jquery 依存関係と angular 依存関係に分割し、jquery 依存関係に続いて angular 依存関係をロードすることでした。おそらく、使用しているいくつかの競合するライブラリがあり、それが問題の原因でした.

上記がうまくいったとしても、集計にはさらに問題があります。例 => 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=production、それ自体でトリックを実行したわけではありません。

于 2014-12-27T10:38:45.823 に答える