我在跟着 N-blog 学 Node.js, 遇到了问题:express
的中间件 config-lite 找不到 default.js。
config-lite
的说明是,在进程目录下寻找 config 文件夹, 然后再引用 default。
config-lite 是一个轻量的读取配置文件的模块。config-lite 会根据环境变量(NODE_ENV)的不同从当前执行进程目录下的 config 目录加载不同的配置文件。如果不设置 NODE_ENV,则读取默认的 default 配置文件,如果设置了 NODE_ENV,则会合并指定的配置文件和 default 配置文件作为配置,config-lite 支持 .js、.json、.node、.yml、.yaml 后缀的文件。
我对路径进行了检查,没有问题,但是中间件却不能引用 default, 请问怎么解决?
错误信息:
config-lite load `default` failed
Error: Cannot find module 'default' from '/Users/olafcheng/Programs/Note'
at Function.module.exports [as sync] (/Users/olafcheng/Programs/Note/node/code/c5/myblog/node_modules/resolve/lib/sync.js:33:11)
at loadConfig (/Users/olafcheng/Programs/Note/node/code/c5/myblog/node_modules/config-lite/index.js:32:26)
at Object.<anonymous> (/Users/olafcheng/Programs/Note/node/code/c5/myblog/node_modules/config-lite/index.js:18:20)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
config-lite load `default` failed
Error: Cannot find module 'default' from '/Users/olafcheng/Programs/Note'
用 process.cwd()
输出进程目录:
console.log("Process path is: " + process.cwd());
// Process path is: /Users/olafcheng/Programs/Note/node/code/c5/myblog
用 process.env.NODE_ENV
输出和 config-lite
有关的环境变量(没定义, 所以按照说明, 是直接读取 default.js):
console.log("process.env.NODE_ENV = " + process.env.NODE_ENV);
// process.env.NODE_ENV = undefined
有人提示是不是文件权限导致的问题,我把 default.js 的权限改成了 777 仍然不行, 文件路径没问题。
最新的config-lite必须配置目录:
用法如下:
var config = require('config-lite')(__dirname);
或者:
var config = require('config-lite')({
filename: 'test',
config_basedir: __dirname,
config_dir: 'config'
});