2014-07-07 43 views
3

我的項目遵循以下(簡體)目錄結構:app/目錄下無法設置爲的baseUrl實習生亞軍

\ 
|- app 
    |- script1.js 
    |- script2.js 
|- test 
    |- intern.conf.js 
    |- test.spec.js 

我用我的應用程序requirejs,因此所有的腳本有他們的依賴性相對於夾。

由於Intern baseUrl默認爲根文件夾,因此app/下的腳本無法加載。

然而,在加載程序設置的baseUrl到「應用程序」或「/應用」等等,在失敗加載測試套件結果..

Error: Failed to load module ../test/intern.conf from test/intern.conf.js (parent: *2)

我試圖設置測試套件位置'../test/test.spec.js'等,沒有成功。

回答

2

baseUrl必須基礎URL共同所有的模塊,包括測試模塊,所以你的情況將是apptest目錄的父目錄。通常這意味着你將cd到父目錄,並從那裏簡單地運行Intern,如intern-runner config=test/intern.conf,而無需額外的加載程序配置。

如果確實需要額外的配置(例如,將app定義爲包),則Intern配置文件中的加載器配置不需要與應用程序中的加載器配置相同,因此在實踐中兩者之間的差異不應該是一個問題。您的應用程序入口點中將有一個適用於您的應用程序的配置,並且您的測試配置中有一個適用於您的測試環境的配置。

相對AMD模塊ID是相對於模塊本身,所以如果你的模塊app/script1具有相關./script2,它將正確加載/root/app/script2.js,不/root/script2.js。當您從test/test.spec模塊加載app/script1時,只要您的baseUrl是父目錄,您可以要求../app/script1(如果這是有道理的,即如果兩者是同一邏輯包的一部分)或app/script1(如果testapp是應該是兩個不同的包)。

+0

我的問題是從'script1',導致在瀏覽器控制檯中正在加載'script2'我有以下錯誤信息:'錯誤:錯誤:無法從/ script2加載模塊script2。在http:// localhost:9000/__ intern/node_modules/dojo/dojo.js:731'上使用js(parent:app/script1) –

+0

使用script2的相對路徑確實可以修復測試,但這樣做不錯嗎? –

+1

您應始終使用相關模塊ID作爲屬於同一軟件包一部分的模塊。這是模塊可移植性的基石。正如你所看到的,如果沒有它,你的代碼是完全不可移植的,不能完全從它所期望的位置移動而不被完全破壞。 –

0

我相信你可能需要在你的requirejs配置對象中設置一些路徑。它將允許您加載baseUrl目錄之外的腳本。因此,您仍然可以在通過路徑別名(http://requirejs.org/docs/api.html#jsfiles)加載測試目錄時將baseUrl設置爲「app」。

在下面的例子中,「app」和「test」在requirejs.config調用的根目錄下,所以使用「/ test」。你也可以使用「../」,如果文件不在根目錄下。

requirejs.config({ 
    baseUrl: "/app", 
    paths: { 
     "test"    : "/test" 
    }, 
}); 

這將使你需要一個測試文件通過:

define(["test/test.spec.js"], function(){ ... }); 

因爲它將使用「測試」路徑,找出該目錄。

+0

問題是,實習生似乎也在使用baseUrl,特別是,將baseUrl設置爲'/ app'會在控制檯中引入錯誤:'錯誤:未能加載模塊../Users/miguel/來自Users/miguel/project/test/intern.runner.conf的project/test/intern.runner.conf。js(父母:* 2)' –

+0

對不起,我誤會了實習生是一個文件名,而不是另一個AMD技術。我相信'useLoader'在看到實習生後會幫助解決這個問題。 來源: https://github.com/theintern/intern/wiki/Using-Intern-with-Alternative-AMD-Loaders-(like-RequireJS) https://github.com/theintern/intern/wiki /配置 - 實習生#user-content-useloader – morriswchris