【问题标题】:how to make lodash work with angular4 aot如何使 lodash 与 angular4 aot 一起工作
【发布时间】:2017-07-20 18:56:45
【问题描述】:

使用 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.

请帮忙。

【问题讨论】:

    标签: angular lodash angular2-aot


    【解决方案1】:

    很确定你的 lodash 配置映射错误,而不是这个:

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

    这是 index.js 里面的内容

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

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 2018-03-24
      • 1970-01-01
      • 2021-07-02
      • 2022-01-25
      • 2018-05-12
      • 2018-02-02
      • 1970-01-01
      • 2018-04-11
      相关资源
      最近更新 更多