N-blog 中 config-lite 找不到 default , 检查了文件和搜索路径都没问题

我在跟着 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 仍然不行, 文件路径没问题。

阅读 8.4k
5 个回答

最新的config-lite必须配置目录:

用法如下:

var config = require('config-lite')(__dirname);

或者:

var config = require('config-lite')({
filename: 'test',
config_basedir: __dirname,
config_dir: 'config'
});

var config = require('config-lite')(__dirname); // 这个已经不行了,是他的库本身的逻辑配置一定要求default的config才可以这样写

按照教程的话,要改成这样

var config = require('config-lite')({
    filename: 'default',
    config_basedir: __dirname,
    config_dir: 'config',
});

并且需要安装loadsh才可以,因为config-lite用了loadsh组织目录

npm i lodash --save

按照教程来,同样出现了这个问题,
输入supervisor --harmony index 命令就报错

新手上路,请多包涵

请问你解决了这个问题吗?同问,哈哈

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏