0

使用带有 JADE 的节点作为视图引擎。我只是想在一本名为“使用 Node 和 Express 的 Web 开发”的书之后进行一些页面测试。

我收到以下错误:

Cannot call method 'ui' of undefined

当我尝试调用 mocha.ui

    58|                         script(type='text/javascript' src='/mocha/mocha.js')
    59|                         script(type='text/javascript' src='/chai/chai.js')
  > 60|                         -mocha.ui('tdd');
    61|                         -var assert = chai.assert;
    62|                         script(type='text/javascript' src='/qa/global-tests.js')
    63|                         -if(pageTestScript){

整个通话:

    //Page Tests + Global Tests
    -if(showTests){
        div(id="mocha")
        script(type='text/javascript' src='/mocha/mocha.js')
        script(type='text/javascript' src='/chai/chai.js')
        -mocha.ui('tdd');
        -var assert = chai.assert;
        script(type='text/javascript' src='/qa/global-tests.js')
        -if(pageTestScript){
            script(src= pageTestScript)
        -}
    -}

我的路径结构是:

node_modules
->chai
->->chai.js
->mocha
->->mocha.js

还设置了 node_modules 的可见性:

app.use(express.static(__dirname + '/node_modules'));

通过firebug检查,可以访问以下css:

link(rel='stylesheet', href='/mocha/mocha.css') 

尝试将 js 文件移动到不同的文件夹,更改脚本调用,谷歌搜索。

非常感谢你。

4

1 回答 1

2

看起来您希望mocha通过使用脚本标记将玉用作变量。您似乎对前端和后端的变量感到困惑。您使用的 mocha 变量是 node 提供的后端变量。它与你脚本标签中的 mocha.js 完全没有关系。

-对于以or开头的行=,jade 评估这些并在服务器端用它们的值替换它们。脚本标签在浏览器中被评估。它所做的只是转换类似的东西

script(src="hello.js)

<script src="hello.js">

Jade 不运行脚本标签中提到的脚本。

解决方案后添加(在客户端处理 mocha 测试):

-if(showTests){
    div(id="mocha")
    script(type='text/javascript' src='/mocha/mocha.js')
    script(type='text/javascript' src='/chai/chai.js')
    script(type='text/javascript').
        mocha.ui('tdd');
        var assert = chai.assert;
    script(type='text/javascript' src='/qa/global-tests.js')
    script(type='text/javascript').
        console.log('Test console output');
    -if(pageTestScript){
        script(src= pageTestScript)
    -}
    script(type='text/javascript').
        mocha.run();
-} 
于 2014-05-17T09:19:24.247 回答