2016-11-06 12 views
3

私はnpm経由で発行されたカスタムlibを持っています。それはpeerDependencyを宣言します"lodash": "4.15.*"peerDependencyとして宣言された_(lodash)の参照エラー

私の知る限り、それは私のライブラリを使用したいと思う人は誰でも指定されたバージョンでlodashを提供する必要があります。だから私のアプリの依存関係では、"lodash": "4.15.*"がありますが、私のカスタムライブラリからコンポーネントを使用するときは、私は次のように表示されますReferenceError: _ is not definedapp.jsrequire('lodash');を追加しましたが、役に立たなかったです。

これを行うには他に何が必要ですか?

ライブラリはAngularJS 1.5とTypeScriptで書かれています。私はそれをプレーンなAngularJS 1.5アプリケーションで使用しようとしています。

EDIT。

私のライブラリでは、その変数_はグローバルなので、それを使用するファイルにはインポートされません。

+0

@JonathanLonowski残念ながら 'var _ = require( 'lodash')'何の違いもありませんでした。 – Purple

+0

Lodashクライアントまたはサーバー側をロードしようとしていますか? NPMはクライアント側の依存関係にも使用できますが、一般的にBrowserifyやWebpackなどのビルドツールを使用してNodeのモジュールシステムを翻訳して、ブラウザが何が起こるかを理解できるようにする必要があります。 –

+0

クライアント側でLodashをロードしようとしています。はい私はすべてのスクリプトを1つのファイルに入れるためにBrowserifyを使用しています。 – Purple

答えて

1

_がグローバルであるという前提が正しくありません。あなたがnodバージョンのlodashを使用している場合、それは何かをグローバルにエクスポートしないcommonjsモジュールです。

_をグローバルにエクスポートするためにbrowserifyで特別なプラグインを使用していないか、スクリプトタグを使用してcdnからlodashを含める場合を除き、_は定義されません。

それが使用する必要のあるすべてのスクリプトでlodashをインポートする正しい方法それから、あなたはtypescriptです2.0を使用していて、@types/lodash NPMパッケージをインストールしていると仮定:

import * as _ from 'lodash'; 

これは、ようtranspileます:

var _ = require('lodash') 

_を正しく使用するためには、ノードには十分である必要があります(Webで使用する場合はbrowserify)。

関連する問題