我有一个快速应用程序,它从./config
文件夹中的单独JSON文件获取一些配置设置。例如,我正在为此服务器设置端口......
var config = require('config');
http.createServer(app).listen(config.port,function () {
console.log('listening on '+config.port);
});
如果我进入快递文件夹并运行npm start
。
但是,当我使用grunt-express-server任务从Grunt启动Express app.js
时,它无法读取配置文件中的任何信息。 (我已经通过在Express app.js
中手动设置端口来测试了这一点:Express应用程序现在可以正常工作,但会抛出一个新错误,说它无法找到视图文件夹。)
我的项目的文件夹结构如下所示:
/project
Gruntfile.js
...
/express
app.js
config/
views/
...
似乎app.js
与config
和views
文件夹的相对位置被忽略,Grunt调用想要在根中查找内容(它在哪里)。 / p>
有没有办法停止/补救这个?
答案 0 :(得分:0)
这取决于您的设置和目录结构。
当您使用require
,节点searches获取NODE_PATH
env变量中列出的目录中的所需文件时。例外情况是'./'
中使用require
,例如require('./config')
,在这种情况下,节点将在您的文件所在的目录中搜索您的配置。
当您运行grunt任务时,NODE_PATH
可能未正确设置以查找配置文件。所以解决方案可能是:
require('./config')
(更好)NODE_PATH
设置为配置文件所在的目录:NODE_PATH=$NODE_PATH:/path/to/dir grunt express
。您还可以在Grunt文件(https://github.com/jsoverson/grunt-env)中定义NODE_PATH
。