了解node.js中的module.exports

时间:2013-05-20 16:05:44

标签: node.js express coffeescript

查看来自https://github.com/twilson63/express-coffee/blob/master/src/config/index.coffee#L13的代码具有以下内容:

#### Config file
# Sets application config parameters depending on `env` name
exports.setEnvironment = (env) ->
  console.log "set app environment: #{env}"
  switch(env)
    when "development"
      exports.DEBUG_LOG = true
      exports.DEBUG_WARN = true
      exports.DEBUG_ERROR = true
      exports.DEBUG_CLIENT = true
      exports.DB_HOST = 'localhost'
      exports.DB_PORT = "3306"
      exports.DB_NAME = 'mvc_example'
      exports.DB_USER = 'root'
      exports.DB_PASS = 'root'

    when "testing"
      exports.DEBUG_LOG = true
      exports.DEBUG_WARN = true
      exports.DEBUG_ERROR = true
      exports.DEBUG_CLIENT = true

    when "production"
      exports.DEBUG_LOG = false
      exports.DEBUG_WARN = false
      exports.DEBUG_ERROR = true
      exports.DEBUG_CLIENT = false
    else
      console.log "environment #{env} not found"

当我尝试输出modules.export时,我从控制台获取一个空数组!

如果我有一个需要此信息的模块,如何正确使用exports.DB_NAME

如果从另一个模块调用,则

console.log config.DB_NAME会返回undefined

任何建议都非常感激。

1 个答案:

答案 0 :(得分:0)

exports上设置的任何属性都可用作需要特定模块时返回的对象的属性。但是,在这种情况下,首先只设置一个属性:setEnvironment函数。其余的一开始就是未定义的。

像这样使用:

  config = require "./config" # the right path depends on where you're requiring from
  config.setEnvironment "development" # or "testing", "production"
  console.log config.DEBUG_LOG
  console.log config.DB_Name