2016-04-16 11 views
0

pulp build -O -t html/main.js、次にpulp build -O -I test -m Test.Main -t html/testmain.js(メインとテストの構築)を使用すると、2つの異なるj出力が得られます。前者の場合、フォーマットはPurescriptパルプビルド出力で、ブラウザでrequirejsエラーが発生する

// Generated by psc-bundle 0.8.2.0 
var PS = { }; 
(function(exports) { 
    // Generated by psc version 0.8.2.0 
    "use strict"; 
    var Prelude = require("../Prelude"); 
    var Control_Monad_Eff = require("../Control.Monad.Eff"); 
    exports["main"] = main; 
})(PS["Main"] = PS["Main"] || {}); 
PS["Main"].main(); 

です。後者の場合には、ザが必要両方の例が短縮されているすべての

// Generated by psc-bundle 0.8.2.0 
var PS = { }; 
(function(exports) { 
    /* global exports */ 
    "use strict"; 

    exports.concatArray = function (xs) { 
    return function (ys) { 
     return xs.concat(ys); 
    }; 
    }; 

    exports.showNumberImpl = function (n) { 
    /* jshint bitwise: false */ 
    return n === (n | 0) ? n + ".0" : n.toString(); 
    }; 

})(PS["Prelude"] = PS["Prelude"] || {}); 
(function(exports) { 
// Generated by psc version 0.8.2.0 
    "use strict"; 
    var $foreign = PS["Prelude"]; 
    var Semigroupoid = function (compose) { 
     this.compose = compose; 
    }; 

で行われていないが、ポイントは、二回目に使用されていないが、最初の時間に使用されている必要とすることです。 問題は私が原因私はページにrequire.jsを含め、このエラー

ReferenceError: require is not defined

にブラウザに必要と使用してバージョンを実行することはできませんよということで、私は

Error: Module name "../Prelude" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded

したがって、このエラーを得ました私の質問は、ブラウザで最初のケースを実行するために何ができるかです。

+0

エラーメッセージから、Preludeはrequireの依存関係にあるようですので、require.jsの前にロードする必要があります。私は知らない、私はちょうど推測する。 –

+0

これはうまくいかないと思います。 require.jsはmain.jsで使用されているため、最初にロードする必要があります。 ReferenceError:requireが定義されていません。 – user2039784

+0

Preludeはrequireの依存関係を持っていますか? –

答えて

0

これは、別の--require-pathオプションでビルドを実行していると思います。空の文字列だった古いデフォルトで1回、../で1回です。これはpsc-bundleにつながり、最初のケースではPreludeControl.Monad.Effを適切に含める必要がありました。 psc-bundleは、他のモジュールへの参照でそれらのrequire呼び出しを置き換えるので、コードはブラウザで機能します。

このようなことが起こる可能性のあるいくつかの方法があります。コンパイラは、これが起こる可能性をさらに低くする方法で更新されています。発生しました。

上記のいずれにも当てはまらない場合は、心配しないでください。私はあなただけでこれを修正するために次の操作を行う必要があると思う:

  • pscの最新バージョンへのアップデート(0.8.3は../--require-pathデフォルトを変更し、そう0.8.3後のいずれかのバージョンがすべき、しかし、あなたがしますほとんどの場合、最新のバージョンが必要です)
  • outputディレクトリを削除してください。
  • すべてをもう一度コンパイルしてください。
+0

私は0.8.4にアップグレードし、それは魅力のように機能します。ありがとうございました – user2039784

+0

聞くのは大変です。 :) – hdgarrood

0

ブラウザの最初のケースを作成するには、おそらく--browserifyオプションを使用する必要があります。

+0

それは本当です。しかし、browserifyを使用して生成される出力のサイズは、ビルドによって生成される出力のサイズよりもはるかに大きいようです。とにかく、mainとtestをビルドするときにビルドが2つの異なる出力につながる理由を知りたいと思います。 – user2039784

+0

私は違いは、2番目の例の '-m'フラグによるものだと思います。最初のものはエントリポイントがありません...私は間違っている可能性があります。'pulp'と' psc'を最新バージョンに更新する価値があるかもしれません。 'browserify'は最新の' pulp'の '--help'にも存在しないようです。おそらく私のアドバイスは完全に間違っています! –

+0

エントリポイントが指定されていない場合は、デフォルトでMainに設定する必要があります。しかし、私はこれを試しました:パルプビルド-O -m Main -t html/main.jsですが、助けにはなりませんでした。 – user2039784

関連する問題