Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Grunt启动Express会忽略配置JSON数据_Json_Node.js_Express_Gruntjs - Fatal编程技术网

从Grunt启动Express会忽略配置JSON数据

从Grunt启动Express会忽略配置JSON数据,json,node.js,express,gruntjs,Json,Node.js,Express,Gruntjs,我有一个express应用程序,它从/config文件夹中的单独JSON文件中获取一些配置设置。例如,我正在像这样设置服务器的端口 var config = require('config'); http.createServer(app).listen(config.port,function () { console.log('listening on '+config.port); }); 如果我将cd放入express文件夹并运行npm start,则此功能正常 但是,

我有一个express应用程序,它从
/config
文件夹中的单独JSON文件中获取一些配置设置。例如,我正在像这样设置服务器的端口

var config = require('config');

http.createServer(app).listen(config.port,function () {
    console.log('listening on '+config.port);   
});
如果我将cd放入express文件夹并运行
npm start
,则此功能正常

但是,当我使用任务从Grunt启动Express
app.js
时,它无法从配置文件中读取任何信息。(我已经通过在Express
app.js
中手动设置端口进行了测试:Express应用程序现在可以工作了,但是出现了一个新的错误,说它找不到视图文件夹。)

我的项目的文件夹结构如下所示:

/project
  Gruntfile.js
  ...
  /express
    app.js
    config/
    views/
    ...
似乎
app.js
config
views
文件夹的相对位置被忽略,Grunt调用希望在根目录中查找内容(它所在的位置)


有没有办法停止/纠正此问题?

这取决于您的设置和目录结构

使用
require
时,在
node\u PATH
env变量中列出的目录中为所需文件指定节点。例外情况是当您在
require
中使用
./'
时,例如,
require('./config')
,在这种情况下,节点将在文件所在的目录中搜索您的配置

可能,当您运行grunt任务时,
节点\u路径
未正确设置以查找配置文件。因此,解决方案可能是:

  • 使用
    require('./config')
    (更好)
  • 或者将
    NODE\u PATH
    设置为配置文件所在的目录:
    NODE\u PATH=$NODE\u PATH:/PATH/to/dir grunt express
    。您还可以在Grunt文件()中定义
    节点路径

  • 谢谢您的回答,但是
    require('./config')
    抛出了一个错误,不管是由Grunt还是
    npm start启动的。我的GrunFile位于根目录下,而express应用程序位于
    express/app.js
    中。有两个节点模块文件夹,一个用于Grunt(也在根目录中),另一个用于express(在
    /express/
    文件夹中)。哦,配置文件夹位于“/express/config/”,很难猜测问题出在哪里。请您在问题中添加您的确切目录和文件结构好吗?错误信息呢?谢谢嗨,亚罗斯拉夫。我认为你说的文件夹结构是个问题是对的,但我仍然不知道如何解决它(除了把所有东西都放在同一个文件夹中;不理想)。我已经编辑了这个问题,以显示事情是如何布置的……以及在执行相对require(“./config”)时抛出了什么错误?此外,package.json和Gruntfile的内容对于调试您的情况也很有用。