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

And*_*min 8 requirejs typescript lodash asp.net-mvc-5

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

'_'引用UMD全局,但当前文件是一个模块.请考虑添加导入.

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

lodash.js不是一个模块

我试图通过在这里提问来获得帮助,因为Angular(Angular 2)有另一个答案,所以它已经关闭了.我真的需要一个真正的答案,所以我用我自己的解决方案重新发布,希望有人最终帮助我理解这个问题.

在这种情况下,我是:

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

Die*_*itz 10

其他答案都不适合我。这是我解决问题的方法。

使用此方法,您将能够从全局包含加载 lodash

您还将获得极其重要的类型提示,而无需将 lodash 构建到您的 webpack 包中

现在,您可以在所有 ts 文件中全局访问 Lodash,无需导入它

这是我的设置。

超文本标记语言

<head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js" integrity="sha256-VeNaFBVDhoX3H+gJ37DpT/nTuZTdjYro9yBruHjVmoQ=" crossorigin="anonymous"></script>
</head>
Run Code Online (Sandbox Code Playgroud)

国家公共管理

npm i @types/lodash lodash --save-dev
Run Code Online (Sandbox Code Playgroud)

网页包

externals: {
    _: 'lodash'
}
Run Code Online (Sandbox Code Playgroud)

全局.d.ts

import _ from 'lodash';
declare global {
    const _: typeof _;
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.json

"types": [
    "lodash"
],
Run Code Online (Sandbox Code Playgroud)

条目.ts

console.log(_.VERSION)
Run Code Online (Sandbox Code Playgroud)

此方法将加快编译包所需的时间。减少构建大小,进而减少每次构建后客户端的下载大小,并允许客户端使用 CDN 中的缓存库,这些库可能已经存在于内存中,来自以前的构建、其他页面或其他站点。


Fen*_*eng 8

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

// lodash global typing - begin
declare namespace _ {
}
// lodash global typing - end
Run Code Online (Sandbox Code Playgroud)

  • 这不是真正的解决方案,更多的是变通的解决方法,并且破坏了TS的目的 (2认同)

Max*_*Max 8

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

declare const _;
Run Code Online (Sandbox Code Playgroud)

这个对我有用。也可以看看


小智 7

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