angular2 中的 Lodash,声明 var_:any 不工作

Lodash in angular2, declare var_:any not working

我在我的 angular2 应用程序中使用 lodash。通过使用 declare var _: any; 我正在做 lodash 操作,例如 _.findIndex(...) 。现在我面临一个问题。有时在加载页面时出现如下错误

EXCEPTION: ReferenceError: _ is not defined

如何避免这种情况? 根据我的假设,lodash 代码在 declare var _: any;

之前执行

如果您使用的是 TypeScript,则需要在您的文件中导入库:

import _ from 'lodash';

看一个模拟题:

事实上,这取决于将 lodash 库配置/包含到您的 HTML 页面的方式:

  • 将 lodash.js 文件包含到 script 元素中 。这样,lodash 就可以作为全局变量 (_) 进入应用程序。在这种情况下,您需要利用 TypeScript 的环境声明来定义它:

    declare var _: any;
    
  • 将 lodash.js 文件配置到 SystemJS 配置中 。通过这种方式,lodash 库将检测到它将在模块加载器中使用,因此它将自己注册为模块并将 return 和 _ 变量添加到导出中。在这种情况下,您需要使用导入来获取它。由于_变量是直接设置到exports中的,需要这样导入:

    import _ from 'lodash';
    

    对应的配置为:

    System.config({
      (...)
      map: {
        lodash: 'node_modules/lodash/lodash.js'
      },
      meta: {
        lodash: { format: 'amd' }
      }
    });