实习生client.js不使用配置文件中的包定义,因此无法解析dojo / _base / declare

时间:2014-02-20 14:39:35

标签: dojo intern

我一直在与实习生斗争很长一段时间,以测试服务器代码(在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' ]
});

1 个答案:

答案 0 :(得分:1)

我面临的问题与装载机有关:

  • 如果配置文件intern.js位于根级别,则命令必须包含扩展名:config=intern.js;
  • 如果配置文件位于tests之类的子文件夹中,则必须在命令中省略扩展名:config=tests/intern

这发生在intern/client.js第38行,调用了Node.js require()函数。