2017-03-01 4 views
0

Mein Projekt baut auf Linux auf und ich habe keine Ahnung warum. Die Distribution ist Red Hat Enterprise Linux Server Version 7.0.Angular2 AOT ngtools/webpack fehlgeschlagen auf Linux

Meine Umgebung ist:

"node" : "6.9.1" 
"@angular/compiler-cli": "2.4.7", 
"@ngtools/webpack": "1.2.11", 
"typescript": "2.0.10", 
"webpack": "2.2.1", 

Wenn ich die Anwendung mit ngtools/webpack mit dem folgenden Befehl erstellen:

rimraf dist && node --max_old_space_size=2048 node_modules/webpack/bin/webpack.js --progress --profile --bail 

Es tritt am Ende der Kompilation ausfällt, aber wie wir sehen können Im Protokoll wird der Ordner dist mit dem Build generiert. Ich denke, es ist etwas falsch am Ende des Build ist ...

Version: webpack 2.2.1 
    Time: 207558ms 
                     Asset  Size Chunks     Chunk Names 
       fonts/custom-font-icons.ce13ab801013419a9435b06680f3adc1.woff?  7.3 kB   [emitted] 
       fonts/fontawesome-webfont.674f50d287a8c48dc19ba404d20fe713.eot?  166 kB   [emitted] 
       fonts/fontawesome-webfont.b06871f281fee6b241d60582ae9369b9.ttf?  166 kB   [emitted] 
      fonts/fontawesome-webfont.af7ae505a9eed503f8b8e6982036873e.woff2? 77.2 kB   [emitted] 
       fonts/fontawesome-webfont.fee66e712a8a08eef5805a46892932ad.woff?  98 kB   [emitted] 
           fonts/line.567f57385ea3dde2c9aec797d07850d2.gif? 13.1 kB   [emitted] 
          fonts/loading.8732a6660b528fadfaeb35bcf568875f.gif? 9.43 kB   [emitted] 
        fonts/password-meter.64ca45e5df0f0261431766d0701ac7b3.png? 1.56 kB   [emitted] 
     fonts/glyphicons-halflings-regular.f4769f9bdb7466be65088239c12046d1.eot? 20.1 kB   [emitted] 
     fonts/glyphicons-halflings-regular.89889688147bd7575d6327160d64e760.svg?  109 kB   [emitted] 
     fonts/glyphicons-halflings-regular.e18bbf611f2a2e43afc071aa2f4e1512.ttf? 45.4 kB   [emitted] 
    fonts/glyphicons-halflings-regular.fa2772327f55d8198301fdb8bcfc8158.woff? 23.4 kB   [emitted] 
    fonts/glyphicons-halflings-regular.448c34a56d699c29117adc64c43affeb.woff2?  18 kB   [emitted] 
      fonts/roboto-v15-latin-regular.9f916e330c478bbfa2a0dd6614042046.eot? 16.2 kB   [emitted] 
      fonts/roboto-v15-latin-regular.3d3a53586bd78d1069ae4b89a3b9aa98.svg?  49 kB   [emitted] 
      fonts/roboto-v15-latin-regular.38861cba61c66739c1452c3a71e39852.ttf? 32.7 kB   [emitted] 
     fonts/roboto-v15-latin-regular.16e1d930cf13fb7a956372044b6d02d0.woff? 18.5 kB   [emitted] 
     fonts/roboto-v15-latin-regular.7e367be02cd17a96d513ab74846bafb3.woff2? 14.6 kB   [emitted] 
        fonts/slider_handles.1868e2550c9853a938a6211d196f9dcd.png? 1.95 kB   [emitted] 
       fonts/fontawesome-webfont.25a32416abee198dd821b0b17a198a8f.eot? 76.5 kB   [emitted] 
       fonts/custom-font-icons.be444f2f1d966a009c8230e2ca33d4ff.svg? 25.1 kB   [emitted] 
       fonts/custom-font-icons.58e12fc160fde110afe6126b2d7470cd.ttf? 7.22 kB   [emitted] 
       fonts/fontawesome-webfont.912ec66d7572ff821749319396470bde.svg?  444 kB   [emitted] [big] 
       fonts/custom-font-icons.01080eeb1f5d62cb71ee683f27e38d3b.woff2? 3.72 kB   [emitted] 
       fonts/fontawesome-webfont.d7c639084f684d66a1bc66855d193ed8.svg?  392 kB   [emitted] [big] 
       fonts/fontawesome-webfont.1dc35d25e61d819a9c357074014867ab.ttf?  153 kB   [emitted] 
       fonts/fontawesome-webfont.c8ddf1e5e5bf3682bc7bebf30f394148.woff? 90.4 kB   [emitted] 
      fonts/fontawesome-webfont.e6cf7c6ec7c2d6f670ae9d762604cb0b.woff2? 71.9 kB   [emitted] 
              js/vendor.17428182d2aa7c61c2cd.js 1.76 MB  0 [emitted] [big] vendor 
               js/app.17428182d2aa7c61c2cd.js 3.41 MB  1 [emitted] [big] app 
              js/polyfills.17428182d2aa7c61c2cd.js  119 kB  2 [emitted]   polyfills 
              css/vendor.17428182d2aa7c61c2cd.css  258 kB  0 [emitted] [big] vendor 
               css/app.17428182d2aa7c61c2cd.css  276 kB  1 [emitted] [big] app 
             css/vendor.17428182d2aa7c61c2cd.css.map 112 bytes  0 [emitted]   vendor 
              css/app.17428182d2aa7c61c2cd.css.map 109 bytes  1 [emitted]   app 
                    index.html 776 bytes   [emitted] 
                   environment.js 521 bytes   [emitted] 
                  img/ajax-loader.gif 2.05 kB   [emitted] 
                   img/axa-logo.ico  71 kB   [emitted] 
                   img/favicon.ico 5.43 kB   [emitted] 
                   img/logo-axa.png 3.58 kB   [emitted] 
                 img/selected-file.png 10.8 kB   [emitted] 
                  img/user-photo.jpg 3.36 kB   [emitted] 
                  service-worker.js 43 bytes   [emitted] 
     [0] ./~/@angular/core/index.js 2.54 kB {0} [built] 
      [] -> factory:230ms building:3986ms = 4216ms 
     [9] ./~/moment/moment.js 123 kB {0} [built] 
      [] -> factory:239ms building:6108ms = 6347ms 
     [13] ./~/@angular/common/index.js 771 bytes {0} [built] 
      [] -> factory:231ms building:3987ms = 4218ms 
     [24] ./~/@angular/router/index.js 909 bytes {0} [built] 
      [] -> factory:232ms building:4007ms = 4239ms 
     [61] ./~/ng2-translate/index.js 1.81 kB {0} [built] 
      [] -> factory:196ms building:1566ms dependencies:5091ms = 6853ms 
     [66] ./~/rxjs/Rx.js 9.58 kB {0} [built] 
      [] -> factory:208ms building:1611ms = 1819ms 
    [146] ./~/@angular/platform-browser/index.js 635 bytes {0} [built] 
      [] -> factory:227ms building:3996ms = 4223ms 
    [211] ./~/@angular/http/index.js 734 bytes {0} [built] 
      [] -> factory:232ms building:3998ms = 4230ms 
    [346] ./~/process/browser.js 5.3 kB {2} [built] 
      [] -> factory:1611ms building:9565ms = 11176ms 
    [556] ./~/@angularclass/hmr/dist/index.js 202 bytes {0} [built] 
      [] -> factory:246ms building:6315ms = 6561ms 
    [557] ./~/file-saver/FileSaver.js 5.96 kB {0} [built] 
      [] -> factory:240ms building:6340ms = 6580ms 
    [558] ./~/jquery/dist/jquery.js 258 kB {0} [built] 
      [] -> factory:4228ms building:19397ms = 23625ms 
    [1631] ./config/polyfills.ts 357 bytes {2} [built] 
      factory:39341ms building:147ms = 39488ms 
    [1632] ./config/vendor.ts 782 bytes {0} [built] 
      factory:39342ms building:159ms = 39501ms 
    [1633] ./src/bootstrap/prod.bootstrap.ts 740 bytes {1} [built] 
      factory:39342ms building:196ms dependencies:193ms = 39731ms 
     + 1657 hidden modules 

    ERROR in ./$$_gendir/~/@angular/common/src/directives/ng_if.ngfactory.ts 
    Module parse failed: /var/lib/jenkins/workspace/fbranch-gui-webapp-axa/$$_gendir/node_modules/@angular/common/src/directives/ng_if.ngfactory.ts Unexpected token (13:27) 
    You may need an appropriate loader to handle this file type. 
    | import * as import3 from '@angular/core/src/linker/view_utils'; 
    | export class Wrapper_NgIf { 
    | /*private*/ _eventHandler:Function; 
    | context:import0.NgIf; 
    | /*private*/ _changed:boolean; 
    @ ./$$_gendir/src/bootstrap/prod.module.ngfactory.ts 300:0-108 
    @ ./src/bootstrap/prod.bootstrap.ts 

    ERROR in ./$$_gendir/~/@angular/common/src/directives/ng_class.ngfactory.ts 
    Module parse failed: /var/lib/jenkins/workspace/fbranch-gui-webapp-axa/$$_gendir/node_modules/@angular/common/src/directives/ng_class.ngfactory.ts Unexpected token (13:27) 
    You may need an appropriate loader to handle this file type. 
    | import * as import3 from '@angular/core/src/linker/view_utils'; 
    | export class Wrapper_NgClass { 
    | /*private*/ _eventHandler:Function; 
    | context:import0.NgClass; 
    | /*private*/ _changed:boolean; 
    @ ./$$_gendir/~/ng2-bootstrap/alert/alert.component.ngfactory.ts 22:0-84 
    @ ./$$_gendir/src/bootstrap/prod.module.ngfactory.ts 
    @ ./src/bootstrap/prod.bootstrap.ts 

    ERROR in ./$$_gendir/~/@angular/common/src/directives/ng_template_outlet.ngfactory.ts 
    Module parse failed: /var/lib/jenkins/workspace/fbranch-gui-webapp-axa/$$_gendir/node_modules/@angular/common/src/directives/ng_template_outlet.ngfactory.ts Unexpected token (13:27) 
    You may need an appropriate loader to handle this file type. 
    | import * as import3 from '@angular/core/src/linker/view_utils'; 
    | export class Wrapper_NgTemplateOutlet { 
    | /*private*/ _eventHandler:Function; 
    | context:import0.NgTemplateOutlet; 
    | /*private*/ _changed:boolean; 
    @ ./$$_gendir/~/ng2-bootstrap/typeahead/typeahead-container.component.ngfactory.ts 23:0-94 
    @ ./$$_gendir/src/bootstrap/prod.module.ngfactory.ts 
    @ ./src/bootstrap/prod.bootstrap.ts 

Wenn ich das auf Linux laufen, ich habe kein Problem:

node_modules/.bin/ngc -p tsconfig.ngc.json 

Also ich denke, es ist etwas Bestimmtes in webpack ngtools/loader, aber ich weiß nicht was. Hier

ist die webpack.prod.config:

/** 
* Webpack Constants 
*/ 

/** 
* Imports 
*/ 
var webpack = require('webpack'); 
var helpers = require('./helpers'); 


/** 
* Webpack Plugins 
*/ 
var CommonsChunkPlugin = webpack.optimize.CommonsChunkPlugin; 
var autoprefixer = require('autoprefixer'); 
var HtmlWebpackPlugin = require('html-webpack-plugin'); 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 
var CopyWebpackPlugin = require('copy-webpack-plugin'); 
var CompressionPlugin = require("compression-webpack-plugin"); 
var ngToolsWebpack = require('@ngtools/webpack'); 

/** 
* Webpack configuration 
* 
* See: http://webpack.github.io/docs/configuration.html#cli 
*/ 
module.exports = { 

    devtool: 'source-map', 

    entry: { 

    'polyfills': './config/polyfills.ts', 
    'vendor': './config/vendor.ts', 
    'app': './src/bootstrap/prod.bootstrap.ts' // our angular app 

    }, 

    resolve: { 

    modules: [helpers.root('src'), helpers.root('node_modules')], 

    extensions: ['.ts', '.js', '.json', '.css', '.scss', '.html'], 

    alias: { 
     'app': 'src/app', 
     'common': 'src/common', 
     'moment':'moment/moment.js', 
     'jquery':'jquery/dist/jquery.js', 
     'file-saver':'file-saver/FileSaver.js', 
    } 

    }, 

    output: { 

    path: helpers.root('dist'), 
    publicPath: '', 
    filename: 'js/[name].[hash].js', 
    chunkFilename: '[id].[hash].chunk.js' 

    }, 

    module: { 

    rules: [ 
     /*{ 
     test: /\.ts$/, 
     enforce: 'pre', 
     loader: 'tslint-loader' 
     },*/ 
     { 
     test: /\.ts$/, 
     loaders: [ '@ngtools/webpack'], 
     exclude: [/\.(spec|e2e)\.ts$/, /node_modules\/(?!(ng2-.+))/] 
     }, 

     // copy those assets to output 
     {test: /\.png|\.jpe?g|\.gif|\.svg|\.woff|\.woff2|\.ttf|\.eot|\.ico|\.svg$/, loader: 'file-loader?name=fonts/[name].[hash].[ext]?'}, 


     // Support for *.json files. 
     {test: /\.json$/, loader: 'json-loader'}, 

     { 
     test: /\.css$/, 
     exclude: helpers.root('src', 'app'), 
     loader: ExtractTextPlugin.extract({ fallbackLoader: 'style-loader', loader: ['css-loader', 'postcss-loader']}) 
     }, 
     {test: /\.css$/, include: helpers.root('src', 'app'), loader: 'raw-loader!postcss-loader'}, 

     { 
     test: /\.(scss|sass)$/, 
     exclude: helpers.root('src', 'app'), 
     loader: ExtractTextPlugin.extract({ fallbackLoader: 'style-loader', loader: ['css-loader', 'postcss-loader', 'sass-loader'], publicPath: '../'}) 
     }, 
     {test: /\.(scss|sass)$/, exclude: helpers.root('src', 'style'), loader: 'raw-loader!postcss-loader!sass-loader'}, 

     {test: /\.html$/, loader: 'raw-loader'} 

    ], 

    noParse: [/.+zone\.js\/dist\/.+/, /.+angular2\/bundles\/.+/, /angular2-polyfills\.js/] 

    }, 

    // Add additional plugins to the compiler. 
    // 
    // See: http://webpack.github.io/docs/configuration.html#plugins 
    plugins: (function() { 

    var plugins = []; 

    plugins.push(
     new CommonsChunkPlugin({ 
     name: ['vendor', 'polyfills'] 
     }) 
    ); 

    plugins.push(
     new webpack.LoaderOptionsPlugin({ 
     //minimize: true, 
     //debug: false, 
     options: { 
      ts : { 
      'ignoreDiagnostics': [ 
       2403, // 2403 -> Subsequent variable declarations 
       2300, // 2300 -> Duplicate identifier 
       2374, // 2374 -> Duplicate number index signature 
       2375, // 2375 -> Duplicate string index signature 
       2502 // 2502 -> Referenced directly or indirectly 
      ] 
      }, 
      /*tslint: { 
      emitErrors: false, 
      failOnHint: false 
      },*/ 
      postcss: [ 
      autoprefixer({ 
       browsers: ['last 2 version'] 
      }) 
      ] 
     } 
     }) 
    ); 
    // plugins.push(new DashboardPlugin()); 

    plugins.push(
     // Adding jQuery 
     new webpack.ProvidePlugin({ 
     $: 'jquery', 
     jQuery: 'jquery', 
     "window.jQuery": 'jquery' 
     }) 
    ); 

    plugins.push(
     // Adding Moment 
     new webpack.ProvidePlugin({ 
     moment: 'moment' 
     }) 
    ); 

    plugins.push(
     // Adding Moment 
     new webpack.ProvidePlugin({ 
     moment: 'file-saver' 
     }) 
    ); 

    plugins.push(
     // Inject script and link tags into html files 
     // Reference: https://github.com/ampedandwired/html-webpack-plugin 
     new HtmlWebpackPlugin({ 
     template: './src/public/index.html', 
     inject: 'body', 
     chunksSortMode: 'dependency' 
     }) 
    ); 

    plugins.push(
     // Extract css files 
     // Reference: https://github.com/webpack/extract-text-webpack-plugin 
     // Disabled when in test mode or not in build mode 
     new ExtractTextPlugin('css/[name].[hash].css') 
    ); 

    plugins.push(
     new webpack.optimize.UglifyJsPlugin({ 
     compress: { 
      warnings: false 
     }, 
     output: { 
      comments: false 
     }, 
     sourceMap: false 
     })); 

    plugins.push(
     // Copy assets from the public folder 
     // Reference: https://github.com/kevlened/copy-webpack-plugin 
     new CopyWebpackPlugin([{ 
     from: helpers.root('src/public') 
     }]) 
    ); 

    plugins.push(
     new CompressionPlugin({ 
     asset: '[path].gz[query]', 
     algorithm: 'gzip', 
     test: /\.js$|\.css$/, 
     threshold: 10240, 
     minRatio: 0.8 
     }) 
    ); 

    plugins.push(new ngToolsWebpack.AotPlugin({ 
     entryModule: helpers.root('src/bootstrap/prod.module#ProdModule'), 
     tsConfigPath: './tsconfig.aot.json', 
    })); 

    return plugins; 

    }()) 

}; 

Und hier ist der tsconfig.ngc:

{ 
    "compilerOptions": { 
    "module": "es2015", 
    "moduleResolution": "node", 
    "target": "es5", 
    "noImplicitAny": false, 
    "sourceMap": true, 
    "mapRoot": "", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "allowSyntheticDefaultImports": true, 
    "lib": [ 
     "es5", 
     "dom" 
    ], 
    "outDir": "lib", 
    "skipLibCheck": true, 
    "rootDir": "." 
    }, 
    "angularCompilerOptions": { 
    "genDir": "./app/ngfactory", 
    "entryModule": "./src/bootstrap/prod.module#ProdModule", 
    "skipMetadataEmit" : false 
    }, 
    "exclude": [ 
    "src/bootstrap/dev.bootstrap.ts", 
    "src/bootstrap/dev.module.ts", 
    "node_modules", 
    "dist" 
    ] 
} 

Jede Idee, wie könnte ich weitere Informationen haben, um es auf Linux funktioniert?

+0

Vielen Dank für die " unwörtlich "... aber könntest du mir wenigstens erklären warum? – bevrard

Antwort

1

Dank diesen Beitrag: https://github.com/angular/angular-cli/issues/3674

Ich habe endlich das Problem. das Stammverzeichnis wurde in der AotPlugin fehlt:

mainPath: root('src', 'bootstrap.ts') 

Und es war auch ein Tippfehler in der webpack.config:

exclude: [/\.(spec|e2e)\.ts$/, /node_modules\/(?!(ng2-.+))$/] 

Die letzte $ fehlte ...

Verwandte Themen