我正在学习节点,并且正在尝试运行我从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')
结果未定义。
为什么这个应用程序无法启动?
答案 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.json
,config/production.json
等)。