如果我什么都不做,只添加类型定义,它对jquery有效,但lodash会得到一个
"_"引用UMD全局,但当前文件是模块。请考虑改为添加导入。
如果我尝试用import调用的任意组合导入lodash,则会得到
lodash.js不是模块
我试图通过问一个问题here来获得帮助,但它被关闭了,因为有another answer表示Angular (Angular 2)。我真的需要一个真正的答案,所以我重新发布了我自己的解决方案,希望有人最终能帮助我理解这个问题。
在这种情况下,我是:
1.不使用任何框架,如Angular
1.使用类型脚本
1.使用requirejs导入模块
1.使用Visual Studio
1.使用MVC5
7条答案
按热度按时间fafcakar1#
安装lodash后,我在工作文件中使用
import * as _ from 'lodash';
。cgvd09ve2#
我在全局类型定义文件(~\src\typings.d.ts)中添加了以下代码来解决这个问题。
eagi6jfj3#
我在我的~\src\typings.d.ts中添加了:
对我很有效。See also
2vuwiymt4#
其他的答案对我都不起作用。下面是我的解答。
使用此方法,您将能够从全局include加载lodash
您还将获得至关重要的类型提示,而不必将lodash构建到Webpack包中
Lodash现在可以在所有ts文件中全局访问,而无需导入它
这是我的设置。
此方法将加快编译捆绑包所需的时间。减少生成大小,从而减少每次生成后下载到客户端的大小,并允许客户端使用CDN中的缓存库,该库可能已存在于以前生成、其他页面或其他网站的内存中。
kcwpcxri5#
如果您知道这样做是安全的,则有一个编译器选项允许这样做:
--allowUmdGlobalAccess
允许从模块访问UMD全局变量。hgb9j2n66#
"_"引用UMD全局,但当前文件是模块。请考虑改为添加导入。
这是由类型定义引起的。进入@types/lodash文件并删除以下行:
这将解决错误。
编辑*
如果类型定义文件中有任何全局声明,例如,如下所示,则删除上面的export语句将导致另一个错误:
要解决这个问题,要么将属性从全局声明中移到引用它们的接口中,要么将它们完全删除,并将引用的类型更改为泛型。我不确定哪种解决方案会使最终编译更好,但前一种解决方案在我的应用程序中没有引起任何问题,早在IE11之前。
cgyqldqp7#
我在react应用程序中使用loadash时遇到了同样的错误,错误是**_.uniqWith()。
然后我去掉了下划线和点号**并将其用作uniqWith()。
这解决了我的错误