我有我的自定义库,它是通过 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/