ブラウザとノード間でAMDモジュールを共有するために、両方の場所でRequireJSを使用しています(ノードのRequireJSを参照)。
server / dataDao.js:
var requirejs = require('requirejs');
var dataDao = module.exports = {};
requirejs(['client/resource'], function (Resource) {
...
});
client / resource.js:
define(['underscore'], function (_) {
...
});
共有モジュールにサーバー上で機能しない依存関係が含まれていない限り、これは通常は問題なく機能しています。
ただし、アンダースコアのような非AMD互換のライブラリを手動でラップすることを避けるためにuse.jsを導入したいと思います。そのためには、リストされている依存関係の前にuse!
(RequireJSでuseプラグインをトリガーするために)プレフィックスを付ける必要があります。
client / resource.js:
define(['use!underscore'], function (_) {
...
});
これはブラウザではうまく機能しますが、ノードでエラーが発生します。
Error: Calling node's require("use") failed with error: Error: Cannot find module 'use'
これはuseプラグインだけでなく、テキストなどにも固有のものではないと思います。
他の誰かがこの問題に遭遇しましたか?