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

问题描述 投票:8回答:4

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

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

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

lodash.js不是一个模块

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

在这种情况下,我是:

  1. 不使用像Angular这样的框架
  2. 使用TypeScript
  3. 使用requirejs导入模块
  4. 使用Visual Studio
  5. 使用MVC5
typescript asp.net-mvc-5 requirejs lodash
4个回答
7
投票

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

// lodash global typing - begin
declare namespace _ {
}
// lodash global typing - end

3
投票

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

declare const _;

这个对我有用。 See also


0
投票

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


0
投票

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

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

export = _;
export as namespace _;

这将解决错误。

***编辑****

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

declare global { }

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

© www.soinside.com 2019 - 2024. All rights reserved.