Lodash - '_'指的是UMD全局,而lodash.js不是模块错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lodash - '_'指的是UMD全局,而lodash.js不是模块错误相关的知识,希望对你有一定的参考价值。

如果我什么都不做并添加类型定义它适用于jquery但是lodash得到了

'_'表示UMD全局,但当前文件是模块。请考虑添加导入。

如果我尝试使用导入调用的任意组合导入lodash,我得到

lodash.js不是一个模块

我试图通过问一个问题here得到帮助,因为Angular(Angular 2)有another answer它被关闭了。我真的需要一个真正的答案,所以我用我自己的解决方案重新发布,希望有人最终会帮助我理解这个问题。

在这种情况下,我是:

  1. 不使用像Angular这样的框架
  2. 使用TypeScript
  3. 使用requirejs导入模块
  4. 使用Visual Studio
  5. 使用MVC5
答案

我在我的全局类型定义文件(〜 src typings.d.ts)中添加了以下代码来解决问题。我正在使用Angular CLI 1.7

// lodash global typing - begin
declare namespace _ {
}
// lodash global typing - end
另一答案

我在〜 src typings.d.ts中添加了:

declare const _;

这个对我有用。 See also

另一答案

安装lodash后,我在我的工作文件中使用import * as _ from 'lodash';

另一答案

'_'表示UMD全局,但当前文件是模块。请考虑添加导入。

这是由类型定义引起的。进入你的@ types / lodash文件并删除这些行:

export = _;
export as namespace _;

这将解决错误。

***编辑****

如果您的类型定义文件中有任何全局声明,则删除上面的导出语句将导致另一个错误,例如,如下所示:

declare global { }

要解决此问题,请将属性从全局声明移动到引用它们的接口 - 或者完全删除它们并将引用的类型更改为通用的。我不确定哪种解决方案能够做出更好的最终编译,但前者在我的应用程序中并没有像IE11那样引起任何问题。

以上是关于Lodash - '_'指的是UMD全局,而lodash.js不是模块错误的主要内容,如果未能解决你的问题,请参考以下文章

vue项目中实现网页整体随屏幕尺寸缩放亲测 真实有效

vue项目中实现网页整体随屏幕尺寸缩放亲测 真实有效

python 中的type

vue屏幕分辨率缩放 选择适合方案开发你的项目内附加最佳方案任选其一

lodash好用系列- json数组,根据指定key去重

lodash好用系列- json数组,根据指定key去重