7

ファイル main.js のコードは次のようになります。

      phantom.injectJs("libs/require-1.0.7.js");
      require.config(
        {
          baseUrl: "" 
        }
      );
      require([], function(){});

コマンドラインで「phantomjs main.js」を実行すると、main.js で requirejs がうまく動作しません。ブラウザで実行されているページでrequirejsを使用する方法(phantomjsの方法を含む:page.open(url、callback))を知っていますが、上記のようではありません。main.js のような requirejs を使用してみましたが、これはよくある問題だと思います。ありがとうございました!

4

2 に答える 2

1

あなたは webpage.injectJs() を誤解しています

これは、phantomjs ランタイム環境ではなく、読み込んでいるページにスクリプトを挿入するためのものです。

したがって、.injectJs() を使用すると、requirejs が phantomjs.exe ではなく、ページに読み込まれます。

とはいえ、phantomjs の実行環境は commonjs に近似しています。デフォルトでは、RequireJs はそこで実行されません。特に (非常に) やる気がある場合は、nodejs 用に作成された require-shim の移植を試みることもできますが、そのままでは機能せず、ランタイムについて非常に深い理解が必要になります。詳細については、http: //requirejs.org/docs/node.htmlを参照してください。

より良いアイデア: おそらく、実行したい JavaScript の commonjs バージョンがあることを確認する必要があります。私は自分のコードを typescript で個人的に書いているので、commonjs または amd 用にビルドできます。私は、phantomjs コードには commonjs を使用し、nodejs とブラウザーには amd を使用します。

于 2014-02-26T06:52:38.597 に答える