我有一套使用瀏覽器端但經過摩卡測試的服務器端的對象。我正在使用require.js進行AMD加載。該Require.js網站建議使用服務器端amdefine得到定義的模塊在node.js的工作,這段代碼:是否可以在測試中設置amdefine,以便我不必在所有模塊文件中定義它?
if (typeof define !== 'function') {
var define = require('amdefine')(module)
}
確定。但是我必須將其放入我想在Node中使用的每個模塊中。在我的情況下,這意味着我必須從我使用客戶端(大部分)的任何代碼中剝離它。
我想知道是否有任何方法可以將這段代碼放在我的測試中,以便我不必將其放入我的客戶端代碼中。在我的文件中只有測試需要使用代碼似乎很愚蠢 - 將它放在測試代碼中更有意義。然而,當我這樣做,我得到一個錯誤:
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代碼是隻在一個地方 - 測試文件的頂部。有沒有辦法把這個amdefine代碼放在我的測試中,只有我的測試,並仍然得到測試運行服務器端 - 而不必刪除客戶端的amdefine代碼?
這非常有趣。我會看一看。謝謝你回答這個問題,就像這個一樣塵土飛揚。 – jcollum 2014-01-30 15:42:51
我想有人可能會受益。 – Louis 2014-01-30 15:45:16
https://github.com/ajaxorg/node-amd-loader這是一個權利? – jcollum 2014-01-30 16:09:33