我一直在与实习生斗争很长一段时间,以测试服务器代码(在these recommendations之后)和客户端代码(传统应用程序,例如在this project of mine上定义)。
Intern配置文件包含:
loader: {
packages: [
{ name: 'dojo', location: './libs/dojo' },
{ name: 'server', location: './server' }
]
},
但是,始终忽略dojo包的位置。报告的错误是:
$ node node_modules/intern/client.js config=intern suites=server/model/tests/News
Defaulting to "console" reporter
Error: Failed to load module dojo/_base/declare from <root>/dojo/_base/declare.js (parent: server/model/Ne
ws)
at <root>\node_modules\intern\node_modules\dojo\dojo.js:742:12
at fs.js:207:20
at Object.oncomplete (fs.js:107:15)
我为&lt; root&gt;编辑了部分是为了简化输出。
我目前的解决方法是在&lt; root&gt;处复制dojo文件夹。水平,但这不方便......
我当前的文件夹结构是:
<root>
|- client
|- libs
| |- dojo
| |- ...
|- node_modules
| |- grunt
| |- intern
| |- ...
|- server
|- dao
| |- tests
|- model
| |- tests
|- ...
我哪里错了?
更新:我读到的所有地方(如here),配置都被指定为MID,而不是带扩展名的文件名。当我使用“ config = intern.js ”运行我的命令时,配置被正确处理(我已经黑客攻击“client.js”来记录配置内容)。注意:我在Windows机器上运行Node.js / Intern ......
其他信息:以下是处理测试所需的最低内容。
define({
loader: {
packages: [
{ name: 'dojo', location: './libs/dojo' },
{ name: 'server', location: './server' }
]
},
suites: [ 'server/allTests' ]
});
答案 0 :(得分:1)
我面临的问题与装载机有关:
intern.js
位于根级别,则命令必须包含扩展名:config=intern.js
; tests
之类的子文件夹中,则必须在命令中省略扩展名:config=tests/intern
。这发生在intern/client.js
第38行,调用了Node.js require()
函数。