在浏览器中运行mocha测试时没有发现依赖(“lodash”)错误

时间:2017-01-19 10:34:58

标签: javascript requirejs mocha lodash

我有以下AMD导出模块进行测试

define(['lodash', 'log', './xxx'], function(_, log, XXX) {
 ......
});

我正在使用以下测试脚本( myTest.js ),该脚本将上述脚本用作依赖项:

define(["../../../yyy"], function(YYY) {
    describe("Sample Module", function() {

        it('should have a name', function() {
            expect(YYY.name).to.be.a("string");

        });

    });

    return {
        name: "modulespec"
    }
});

使用以下测试运行器在浏览器上运行它:

<div id="mocha"></div>    

<script type="text/javascript" src="js/lib/require.js"></script>
<script type="text/javascript">
    require.config(
        {
            baseUrl:'js/',
            paths:{
                'jquery':'lib/jquery'
            }
        }
    );

    require(['require', 'lib/chai', 'lib/mocha'], function(require){
        mocha.setup('bdd');
        require(['spec/myTest'], function(module){
            console.log("module: ", module);
            mocha.run();
        });
    });
</script>

我在浏览器上运行测试时遇到以下错误:

  

require.js:1677 GET file:///home/malintha/projects /.../mocha/js/lodash.js net :: ERR_FILE_NOT_FOUND

如何包含“lodash”依赖项来解决此问题?

我的文件夹结构是:

.
├── js
│   ├── lib
│   │   ├── chai.js
│   │   ├── mocha.js
│   │   ├── module-b.js
│   │   ├── require.js
│   │   └── should.js
│   ├── SampleModule.js
│   └── spec
│       |
│       └── myTest.js
├── mocha.css
└── runner.html

1 个答案:

答案 0 :(得分:1)

似乎没有安装Lodash。 RequireJS没有为您自动查找和安装库的功能。

您需要先安装它。您可以npm install lodash-amdnode_modules子目录中获取副本。您可以使用任何方法,只要您将Lodash版本安装为AMD模块(或AMD模块的集合)。 NPM包lodash-amd是&#34;官方&#34; AMD打造。问题是RequireJS只能理解AMD格式的模块。它有一些设施可以使用CommonJS模块进行一些简化,但最终需要将它们包装在define(...)中,这使它们成为AMD模块。

然后您需要将其添加到paths。例如,如果您已将其复制到lib

require.config({
  baseUrl:'js/',
  paths:{
    jquery:'lib/jquery',
    lodash: 'lib/lodash',
  }
});