2015-12-15 16 views
5

をバンドルした後に定義されていない、それは次のとおりです。アプリが、私は私のコードでbrowserify実行しています

import './app'; 

//——————————————————————————————————————————————————// 
// Components 
//——————————————————————————————————————————————————// 

import './components/_ntToggleClass'; 

アプリは、単に

const app = angular.module('app', []); 

あるcomponents内のファイルがある一方で、よく、コンポーネント。しかし、彼らはforementioned appを使用している:私は手で一つのファイルにすべてをかけるとき

app.directive('ntToggleClass',() => { 
    ... } 

、すべてが働きました。私は、コードの中を見たときしかし、私はこの上browserify使用した後、私は

Uncaught ReferenceError: app is not defined

を取得しています、両方var appとディレクティブがあります。

+0

これは役に立ちません。申し訳ありません。 –

+1

'require(" ./ components/_ntToggleClass.js ")'を使ってみてください。これはファイルの内容を直接コピーする必要があります。 – Scott

+0

また動作しません。@ScottKaye –

答えて

1

私の友人助けを借りて来ました;-)

私が使用するので(私は、thasは明白だと思ったバベルを使用していますimportではないrequire)私はimportを持っているので、exportも必要です。

ソリューションは、私がしなければならなかったすべては私のapp.jsファイルの末尾に

export default app; 

を入れた後、私のディレクティブ/部品などへの

import app from '../app'; 

を使用して、それをインポートすることで、非常に簡単です

+0

私はimportの代わりにrequireを使用していて、同じ問題に直面しています。私は2つのコントローラを1つのファイルにバンドルし、バンドルされた2番目のファイルにはアプリケーションが定義されていません@Tomek –

1

私はgithubの簡単なサンプルを一緒に打ちました。これは、ブラウザで動作する作業リポジトリを提供します。

私は以前のコメントを削除しました。レポがあなたの質問に答えなければならないと思います。

編集:私はちょうど今、あなたの質問を得ただと思う、あなただけお互いのファイルに使用されるグローバル変数appを作成しようとしていましたか? これは、browserifyを使用すると不可能です。ファイル内のrequired以外の変数は、undefinedを返します。

browserifyを使用する場合は、必要なものだけを要求してください。

+1

うまくやった!素晴らしい写真もあります。 – Scott

0

私はそれが定義の発注についてだと思います。

const app = angular.module('app', []); この部分は一部下記の先頭でなければなりません:

app.directive('ntToggleClass',() => { 
    ... } 
+2

これはうまくいくものですが、私は 'const app ...'をすべてのファイルに書くことを避けたいと考えています。 –

関連する問題