我编写了一个全局函数来要求我的应用程序/框架的某些文件:
global.coRequireModel = function(name) {
// CRASH happens here
return require.main.require('./api/_co' + name + '/_co' + name + '.model');
}
该模块位于 /components/coGlobalFunctions 中。
我的主应用程序 app.js 中需要它,如下所示:
require('./components/coGlobalFunctions');
然后在其他模块中使用我使用的框架中的“东西”:
var baseScheme = coRequireModel('Base');
这有效,但在 Mocha 测试中不起作用,它在 require.main.require 调用之前给我一个“错误:找不到模块”。
测试似乎来自另一个源文件夹。但我认为 require.main.require 会消除必须相对链接到模块的方面。
EDIT:
位于 api/user 中的示例测试文件:
var should = require('should');
var app = require('../../app');
var User = require('./user.model');
...
require.main
指向直接从节点运行的模块。所以,如果你跑node app.js
, then require.main
将指向app.js
。另一方面,如果您使用mocha
, then require.main
将指向摩卡。这可能就是您的测试失败的原因。
See 节点文档 https://nodejs.org/api/modules.html#modules_accessing_the_main_module更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)