如何使用angular4 aot使lodash工作

时间:2017-07-20 18:56:46

标签: angular lodash angular2-aot

使用systemjs.config.js导入lodash的正确方法是什么。 由于lodash,我的AOT失败了。 我的项目是基于https://github.com/filipesilva/angular-quickstart-lib

的组件库
  

我在package.json中使用   “lodash”:“4.17.4”    和“@ types / lodash”:“4.14.68”

以下是我的systemjs.config.js

```
(function (global) {
  System.config({
    paths: {
      // paths serve as alias
      'npm:': 'node_modules/'
    },
    // map tells the System loader where to look for things
    map: {
      // our app is within the app folder
      app: 'app',

      // angular bundles
      '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
      '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
      '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
      '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
      '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
      '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
      '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
      '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',

      // other libraries
      'rxjs':                      'npm:rxjs',
        'primeng': 'npm:primeng',

        'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
      'angular-quickstart-lib': 'npm:angular-quickstart-lib/bundles/angular-quickstart-lib.umd.js',
        'lodash': 'npm:lodash/lodash.js'
    },
    // packages tells the System loader how to load when no filename and/or no extension
    packages: {
      app: {
        defaultExtension: 'js',
          meta: {
              './*.js': {
                  loader: 'systemjs-angular-loader.js'
              }
          }
      },
      rxjs: {
        defaultExtension: 'js'
      },
        'primeng': {defaultExtension: 'js'},
        'angular-quickstart-lib': {
            main: 'index.js',
            defaultExtension: 'js',
            meta: {
                './*.js': {
                    loader: 'systemjs-angular-loader.js'
                }
            }
        },
        'lodash':{
          main: 'index.js',
          defaultExtension: 'js'
        }
    }
  });
})(this);

```

我按如下方式导入lodash import * as _ from 'lodash';

但是AOT我得到了以下错误。 (node:5810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: 'cloneDeep' is not exported by node_modules/lodash/lodash.js (node:5810) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

请帮忙。

1 个答案:

答案 0 :(得分:0)

非常确定你的配置映射错误的是lodash,而不是:

'lodash': 'npm:lodash/lodash.js' 应该是: 'lodash': 'npm:lodash/index.js'

这就是index.js里面的内容

module.exports = require('./lodash');