我是摩卡新手。当我从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>
答案 0 :(得分:1)
当您在命令行运行Mocha时,您使用的是Node.js,它提供require
。
在浏览器中运行时,浏览器不提供require
。您需要在运行时使用模块加载器,如RequireJS或SystemJS。或者您需要使用像Webpack或Browserify这样的打包程序,它将事先处理您的代码并将其转换为包含所有代码的单个包。
请注意,您使用的第三方模块是否可以在浏览器中加载,这是您必须逐个模块进行的决定。例如,如果您使用使用Node的child_process
模块生成新进程的模块,则无法在浏览器中使用该模块,因为浏览器不提供child_process
。 / p>