我们正在使用CompoundJS开发一个文件夹结构如下的应用程序: 化合物
compoundApp
|-- app
| |-- controllers
| | |-- application_controller.js
| | |-- login_controller.js
| |-- utils
| | |-- email-utils.js
在 application_controller.js 中,我们需要email-util.js作为以下代码:
var _ = require('underscore'),
passport = require('passport'),
EmailUtils = require('./app/utils/email-utils.js')(compound);
启动应用程序时出现此错误:
Error: Cannot find module './app/utils/email-utils.js'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Promise.eval (eval at <anonymous> (d:\TiniPlanet_SVN\src\TiniGame\trunk\tiNiWeb\node_module\compound\node_modules\kontroller\lib\base.js:157:17), <anonymous>:145:22)
我们在不同的文件夹级别遇到了同样的问题:
EmailUtils = require('../app/utils/email-utils.js')(compound);
或
EmailUtils = require('../utils/email-utils.js')(compound);
或
EmailUtils = require('./utils/email-utils.js')(compound);
有没有人可以帮助解释这个问题以及如何解决它。我们如何找到要检查的文件夹是否需要?
答案 0 :(得分:1)
require('../utils/email-utils.js')
通常应该有效,因为这是正确的位置。
然而,显然CompoundJS做了一些时髦的事情,因为它使用eval
运行你的代码,这使得需要相对于CompoundJS模块本身内的某个路径(阅读CompoundJS文档,这是因为你正在使用{ {3}})。
我认为最好通过调整eval controllers
环境变量来解决,因此它包含您的基本目录(compoundApp
)。这样,require('app/utils/email-utils')
应该可以工作(虽然我不熟悉Windows上Node节点变量的复杂性)。