从TestRunner.html导入模块时需要声明错误

时间:2017-04-21 09:30:50

标签: mocha

我是摩卡新手。当我从terminal运行时,我的脚本可以正常工作。但是,当我从testrunner.html运行时没有结果。在检查时,似乎是因为var xl = require('./excel');。如果我评论这个陈述,它是有效的。我怎样才能做到这一点?我需要为我的脚本导入自定义模块。

更新了test.js以合并RequireJS

  • 发布更改:适用于浏览器和期刊

module1.js

if(typeof define !== 'undefined')
{
    define([], function() {
        return {
            get: function() {
                return get();
            }
        };
    });
}
else if(typeof exports !== 'undefined') {
    module.exports = {
        get: function(){
            return get();
        }    
    };    
}

function get(){
    return "hello node world";
}

test.js

if(typeof requirejs == 'undefined') {var requirejs = require('requirejs');}
if(typeof chai == 'undefined') {var chai = require('chai');}
requirejs.config({
    baseUrl: '.',
    paths: {   

    },
    nodeRequire: require
});

describe("RequireTest()", function(){    
    var module1;
    before(function(done){
        requirejs(['./module1'], 
            function(_module) {                    
                console.log('before fired');
                module1 = _module;  
                if(typeof requirejs == 'undefined') {mocha.run();}
                done();             
        });
    });        
    it('test case: ', function(){
        console.log(module1.get());
        chai.expect(1+1).to.equal(2);
    });
});

testrunner.html(摘录)

<div id="mocha"></div>
<script src="../node_modules/mocha/mocha.js"></script>
<script src="../node_modules/chai/chai.js"></script>
<script src="../node_modules/requirejs/require.js"></script>
<script>mocha.setup('bdd')</script>

<script src="./test.js"></script>

<script>mocha.run();</script>

1 个答案:

答案 0 :(得分:1)

当您在命令行运行Mocha时,您使用的是Node.js,它提供require

在浏览器中运行时,浏览器不提供require。您需要在运行时使用模块加载器,如RequireJS或SystemJS。或者您需要使用像Webpack或Browserify这样的打包程序,它将事先处理您的代码并将其转换为包含所有代码的单个包。

请注意,您使用的第三方模块是否可以在浏览器中加载,这是您必须逐个模块进行的决定。例如,如果您使用使用Node的child_process模块生成新进程的模块,则无法在浏览器中使用该模块,因为浏览器不提供child_process。 / p>