NodeJS示例应用无法启动,无法找到' config'?

时间:2014-12-21 00:48:48

标签: javascript node.js mongodb express npm

我正在学习节点,并且正在尝试运行我从git中提取的示例应用:

https://github.com/madhums/node-express-mongoose-demo

按照所有说明操作后,我运行

npm start

我收到错误消息

> nodejs-express-mongoose-demo@4.0.0 start /Users/adam419/Desktop/Programming/JSPractice/node-express-mongoose-demo
> NODE_PATH=./config:./app/controllers NODE_ENV=development ./node_modules/.bin/nodemon server.js

20 Dec 16:45:19 - [nodemon] v1.2.1
20 Dec 16:45:19 - [nodemon] to restart at any time, enter `rs`
20 Dec 16:45:19 - [nodemon] watching: *.*
20 Dec 16:45:19 - [nodemon] starting `node --harmony server.js`
WARNING: No configurations found in configuration directory:
WARNING: /Users/adam419/Desktop/Programming/JSPractice/node-express-mongoose-demo/config
WARNING: See https://www.npmjs.org/package/config for more information.

module.js:340
    throw err;
          ^
Error: Cannot find module 'undefined/config/imager.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 Object.<anonymous> (/Users/adam419/Desktop/Programming/JSPractice/node-express-mongoose-demo/app/models/article.js:10:20)
    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)
20 Dec 16:45:20 - [nodemon] app crashed - waiting for file changes before starting...

确保我已安装并运行mongodb后出现这种情况,确保我已安装所有依赖项,包括&#39; config&#39;。实际上在我运行的节点shell中

require('config')

结果未定义。

为什么这个应用程序无法启动?

5 个答案:

答案 0 :(得分:2)

删除node_modules文件夹中的config文件夹修复了问题。

答案 1 :(得分:2)

我看到未设置NODE_CONFIG_DIR环境变量时会发生这种情况。它告诉node-config在哪里可以找到配置文件。默认情况下,读取正在运行的进程的./config目录中的配置文件,通常是应用程序根目录。

node-config docs建议在CLI或配置文件中设置此环境变量,如下所示:

process.env["NODE_CONFIG_DIR"] = __dirname;
如果配置文件与默认文件位于同一文件夹中,则

__dirname是可以的。EXT和其他配置文件,但是您可能需要将其更改为这些文件所在的实际路径。

否则,我们最终得到:"WARNING: No configurations found in configuration directory:<PROJECT_ROOT>/config/config" ,然后是类似'Configuration property "some-config-key" is not defined'的错误

答案 2 :(得分:1)

那是因为配置必须相对加载。 require('config')语句尝试在node_modules目录中找到名为config的模块,其中as config位于根文件夹的config目录中。尝试将require('config')更改为require('../../config')。这应该可以解决你的问题。

答案 3 :(得分:0)

就我而言,忘记了将配置对象导出到配置文件(default.js)中

module.exports =配置

答案 4 :(得分:0)

我有类似的错误。

问题:我在根目录下的子文件夹中创建了config文件夹。

解决方案::将config文件夹移至根目录。

该错误的另一个可能原因可能是由于config文件夹中缺少配置文件(例如config/default.jsonconfig/production.json等)。