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

时间:2016-11-06 20:46:04

标签: javascript angularjs typescript lodash

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

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

为了使这项工作,我还应该做些什么?

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

EDIT。

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

1 个答案:

答案 0 :(得分:1)

您认为_是全局的错误。如果您使用的是lodash的npm版本,那么它是一个commonjs模块,不会全局导出任何内容。

这意味着,除非您在browserify中使用某些特殊插件全局导出_,或者您使用脚本标记从cdn中包含lodash,否则将不会定义_

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

import * as _ from 'lodash';

这将转化为:

var _ = require('lodash')

对于节点(或在网络中使用它时browserify)来说,这应该足以正确地包含和设置_可用。