Javascript 在摩卡处理未安装npm的依赖项?
我有一个工作节点应用程序,我正在尝试添加Mocha测试,但得到一些奇怪的导入错误 这是我的文件结构:Javascript 在摩卡处理未安装npm的依赖项?,javascript,node.js,mocha.js,require,Javascript,Node.js,Mocha.js,Require,我有一个工作节点应用程序,我正在尝试添加Mocha测试,但得到一些奇怪的导入错误 这是我的文件结构: package.json index.js src/ chart.js test/ test_chart.js 这就是我的chart.js文件的外观: global.jQuery = require('jquery'); global.$ = global.jQuery; require('typeahead'); require('bloodhound'); var bootstra
package.json
index.js
src/
chart.js
test/
test_chart.js
这就是我的chart.js
文件的外观:
global.jQuery = require('jquery');
global.$ = global.jQuery;
require('typeahead');
require('bloodhound');
var bootstrap = require('bootstrap');
var Handlebars = require('handlebars');
var Highcharts = require('highcharts-browserify');
var parse = require('csv-parse');
var moment = require('moment');
var analyseChart = {
doSomething: function() { ... }
};
module.exports = analyseChart;
目前,我将/src
中的所有内容导入到一个index.js
文件中,然后将其与browserify
捆绑在一起,该文件工作正常,应用程序中没有错误
我在package.json中有一节定义了npm无法提供的依赖项,如下所示:
"browser": {
"chosen": "./vendor/chosen.jquery.min.js",
"typeahead": "./vendor/typeahead.bundle.js",
"bloodhound": "./vendor/bloodhound.js"
}
现在我想开始为/src
中的函数编写Mocha测试
这是我在test_chart.js
中的第一个存根:
var chart = require('../src/chart');
chart.doSomething();
但是当我运行mocha
时,我得到以下错误:
/Users/.../js/node_modules/typeahead/node_modules/dom/lib/matches.js:2
var proto = Element.prototype;
^
ReferenceError: Element is not defined
at Object.<anonymous> (/Users/.../js/node_modules/typeahead/node_modules/dom/lib/matches.js:2:13)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/.../js/node_modules/typeahead/node_modules/dom/index.js:4:15)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/.../js/node_modules/typeahead/typeahead.js:3:11)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/.../js/src/chart.js:3:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/.../js/test/test_chart.js:3:13)
/Users/../js/node_modules/typeahead/node_modules/dom/lib/matches.js:2
var proto=Element.prototype;
^
ReferenceError:未定义元素
反对。(/Users/../js/node_modules/typeahead/node_modules/dom/lib/matches.js:2:13)
在模块处编译(Module.js:456:26)
在Object.Module.\u extensions..js(Module.js:474:10)
在Module.load(Module.js:356:32)
在Function.Module.\u加载(Module.js:312:12)
at Module.require(Module.js:364:17)
根据需要(模块js:380:17)
反对。(/Users/../js/node_modules/typeahead/node_modules/dom/index.js:4:15)
在模块处编译(Module.js:456:26)
在Object.Module.\u extensions..js(Module.js:474:10)
在Module.load(Module.js:356:32)
在Function.Module.\u加载(Module.js:312:12)
at Module.require(Module.js:364:17)
根据需要(模块js:380:17)
反对。(/Users/../js/node_modules/typeahead/typeahead.js:3:11)
在模块处编译(Module.js:456:26)
在Object.Module.\u extensions..js(Module.js:474:10)
在Module.load(Module.js:356:32)
在Function.Module.\u加载(Module.js:312:12)
at Module.require(Module.js:364:17)
根据需要(模块js:380:17)
反对。(/Users/../js/src/chart.js:3:1)
在模块处编译(Module.js:456:26)
在Object.Module.\u extensions..js(Module.js:474:10)
在Module.load(Module.js:356:32)
在Function.Module.\u加载(Module.js:312:12)
at Module.require(Module.js:364:17)
根据需要(模块js:380:17)
反对。(/Users/../js/test/test_chart.js:3:13)
如何修复Mocha的此导入错误
我想它可能不喜欢require('typeahead')
,因为它看不到我在package.json
中设置的browser
依赖路径
有什么方法可以让摩卡和browserify都可以使用这些文件吗
或者我应该同时使用另一个测试包吗?这是节点应用程序还是浏览器应用程序(或者两者都使用)?测试服务器端代码或客户端/浏览器端代码时是否遇到问题?在我看来,这可能是客户端代码。如果是这样,是在浏览器中测试还是尝试在节点中测试?你能展示失败的单元测试吗?你可能应该使用类似Karma的东西,但这超出了问题的范围。