5

私はブラウザ側で使用されているオブジェクトのセットを持っていますが、モカでサーバー側をテストしました。AMD の読み込みに require.js を使用しています。Require.js サイトでは、サーバー側で amdefine を使用して、定義済みのモジュールを node.js で動作させるために、次のコードを使用することを提案しています。

if (typeof define !== 'function') {
    var define = require('amdefine')(module)
}

わかった。しかし、Node.js で使用したいすべてのモジュールにそれを入れなければなりません。私の場合、クライアント側で使用しているコード (ほとんど) からコードを削除する必要があることを意味します。

クライアント側のコードに入れる必要がないように、代わりにそのコードのチャンクをテストに入れる方法があるかどうか疑問に思っています。テストにのみ必要なコードをファイルに入れるのはばかげているように思えます。テスト コードに入れる方が理にかなっています。ただし、これを行うとエラーが発生します。

Error: amdefine with no module ID cannot be called more than once per file.
    at runFactory (/home/vmplanet/dev/alpha/web/node_modules/amdefine/amdefine.js:159:23)
    at define (/home/vmplanet/dev/alpha/web/node_modules/amdefine/amdefine.js:275:13)
    at Object.<anonymous> (/home/vmplanet/dev/alpha/web/assets/src/coffee/delta/dataLayer.coffee:4:3)
    at Object.<anonymous> (/home/vmplanet/dev/alpha/web/assets/src/coffee/delta/dataLayer.coffee:158:4)
    at Module._compile (module.js:456:26)
    at Object.loadFile (/usr/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:179:19)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)

amdefine コードが 1 か所 (テスト ファイルの先頭) にしかないため、これは奇妙なエラーです。この amdefine コードを自分のテストに入れ、自分のテストだけに入れ、テストをサーバー側で実行する方法はありますか? クライアント側の amdefine コードを取り除く必要はありませんか?

4

1 に答える 1