Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法为实习生跑步者设置baseUrl_Javascript_Selenium Webdriver_Intern - Fatal编程技术网

Javascript 无法为实习生跑步者设置baseUrl

Javascript 无法为实习生跑步者设置baseUrl,javascript,selenium-webdriver,intern,Javascript,Selenium Webdriver,Intern,我的项目遵循以下(简化)目录结构: \ |- app |- script1.js |- script2.js |- test |- intern.conf.js |- test.spec.js 我在我的应用程序中使用requirejs,因此app/目录下的所有脚本都有它们相对于该文件夹的依赖关系 由于Intern baseUrl默认为根文件夹,因此app/下的脚本无法加载 但是,将loader下的baseUrl设置为'app'或'/app'等等,会导致加载测试套件失败

我的项目遵循以下(简化)目录结构:

\
|- app
   |- script1.js
   |- script2.js
|- test
   |- intern.conf.js
   |- test.spec.js 
我在我的应用程序中使用requirejs,因此
app/
目录下的所有脚本都有它们相对于该文件夹的依赖关系

由于Intern baseUrl默认为根文件夹,因此
app/
下的脚本无法加载

但是,将loader下的baseUrl设置为'app'或'/app'等等,会导致加载测试套件失败

错误:无法从加载模块../test/intern.conf test/intern.conf.js(父项:*2)


我试图将测试套件位置设置为“../test/test.spec.js”等等,但没有成功。

我认为您可能需要在requirejs配置对象中设置一些路径。它将允许您加载baseUrl目录之外的脚本。因此,在通过路径别名()加载到测试目录时,仍然可以将baseUrl设置为“app”

在下面的示例中,“app”和“test”都与requirejs.config调用一起位于根目录下,因此使用“/test”是可行的。如果文件不在根目录中,也可以使用“./”

requirejs.config({
    baseUrl: "/app",
    paths: {
        "test"               : "/test"
    },
});
这将允许您通过以下方式要求测试文件:

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

因为它将使用“测试”路径来找出该目录的位置。

基本URL必须是所有模块(包括测试模块)共有的基本URL,因此在您的情况下,将是
应用程序
测试
目录的父目录。通常这意味着您将
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
(如果
test
app
应该是两个不同的包).

问题是intern runner似乎也在使用baseUrl,特别是,将baseUrl设置为“/app”会在控制台中引入错误:
错误:无法从Users/miguel/project/test/intern.runner.conf(父项:*2)加载模块../Users/miguel/project/test/intern.runner.conf
抱歉,我误解了intern是一个文件名,而不是另一种AMD技术。我相信在看过intern之后,
useLoader
将有助于解决这个问题。来源:我的问题就是从
script1
加载
script2
,因为在浏览器控制台中我有以下错误消息:
错误:Error:无法从/script2.js(父级:app/script1)加载模块script2在http://localhost:9000/__intern/node_modules/dojo/dojo.js:731
为script2使用相对路径确实可以修复测试,但这样做是否是一种好的做法?对于属于同一个包的模块,您应该始终使用相对模块ID。这是模块可移植性的基石。正如您所看到的,没有相对路径,您的代码完全不可移植如果不完全损坏,就无法从预期的位置移动。