javascript - _ (lodash) 声明为 peerDependency 时的引用错误

标签 javascript angularjs typescript lodash

我有我的自定义库,它是通过 npm 发布的。它声明 peerDependency "lodash": "4.15.*"

据我了解,这意味着无论谁想要使用我的库,都应该提供指定版本的 lodash。所以在我的 npm 依赖项的应用程序中,我有 "lodash": "4.15.*" 但是当使用我的自定义库中的组件时,我收到以下 ReferenceError: _ is not defined。 我还在我的 app.js 中添加了 require('lodash'); 但它没有帮助。

为了完成这项工作,我还应该做什么?

库是用 AngularJS 1.5 和 TypeScript 编写的。我正在尝试将它与普通的 AngularJS 1.5 应用程序一起使用。

编辑。

我假设在我的库中,变量 _ 是全局变量,因此它不会导入到使用它的任何文件中。

最佳答案

您关于 _ 是全局的假设是不正确的。如果您使用的是 npm 版本的 lodash,它是一个不会全局导出任何内容的 commonjs 模块。

这意味着,除非你在 browserify 中使用一些特殊的插件来全局导出 _,或者你使用脚本标签从 cdn 包含 lodash,否则 _ 将未定义。

假设您使用的是 typescript 2.0 并且已经安装了 @types/lodash npm 包,那么在每个需要使用它的脚本中导入 lodash 的正确方法是:

import * as _ from 'lodash';

这将转译为:

var _ = require('lodash')

这应该足以让节点(或 browserify 在 web 中使用它时)正确包含并设置 _ 可用。

关于javascript - _ (lodash) 声明为 peerDependency 时的引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40454356/

相关文章:

javascript - jquery动画帮助

javascript - 自定义初始化函数未在 TestCafe 中执行

reactjs - 如何使用 Typescript 将调度操作注入(inject)到 props 中?

javascript - 写入时验证输入字段

javascript - 如何在 VSCode 的同一个项目中对 .ts 文件和 .js 文件运行 typescript-eslint

javascript - 从对象中检索数据在 Ionic 中不起作用

javascript - AngularJS $locationProvider.search() 导致未捕获对象错误

javascript - 使用 Angular 验证模糊输入字段

javascript - Angular ui - 多次执行的选项卡 Controller

typescript - `in` 关键字在 typescript 中有什么作用?