簡體   English   中英

如何使用jasmine-node配置RequireJS(require.config())?

[英]How to configure RequireJS (require.config()) with jasmine-node?

我有一個init文件,它提供了一個通過require.config()引導RequireJS的函數。 配置最終看起來像(大多數)像這樣:

...

config =
    baseUrl: sysDir + 'lib/'
    paths:
        app: appDir + 'lib/'
        dep: sysDir + 'vendor/'
    deps: [
        'dep/underscore/underscore.min'
        'dep/jquery/jquery.min'
    ]

require.config config

此文件在瀏覽器中使用,我也想在節點中使用它。 我試圖在幫助器中做同樣的事情,但我沒有太多運氣。 由於在新的VM上下文中運行規范的方式,我不確定該怎么做,並且沒有明顯的方法來傳遞您的RequireJS配置的jasmine-node。

有任何想法嗎?

通過將require配置放入specs目錄根目錄下的spec_helper.js,我得到了相應的工作:

define = require('requirejs');

(function () {
    var baseUrl = __dirname + '/../smoke'
    console.log('Configuring requirejs with baseurl: ' + baseUrl)

    define.config({
        'nodeRequire': global.require,
        'baseUrl': baseUrl
    });
})();

不確定這是否真的能解決你的問題。

jasmine-node為requirejs提供了一個示例項目: https//github.com/mhevery/jasmine-node#requirejs

如果您調用類似> jasmine-node --runWithRequireJs --requireJsSetup tests/requirejs-setup.js tests ,則可以在requirejs-setup文件中添加配置設置。

然而,我遇到了baseUrl設置的問題。 在requirejs-wrapper-template.js中,操作baseUrl並相對於當前執行的測試文件進行設置,您可以在此處看到:

if(alteredConfig.baseUrl){
    var base = baseUrl.replace(/\\/g, '/'),
        splitUrl = alteredConfig.baseUrl.replace(/\\/g, '/').split('/'),
        index = 0;

    for(; index < splitUrl.length; index++){
        if(splitUrl[index] === '..') {
            base = path.dirname(base);
        } else {
            base += '/' + splitUrl[index];
        }
    }

    alteredConfig.baseUrl = base;
}

這導致我的requirejs配置定義路徑出現問題。 所以我只是注釋掉了這個代碼塊。 現在它對我很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM