2013-05-18 64 views
0

我获得下列类型的错误,当我运行的node.js应用类型错误:对象不是一个函数 - 的node.js /快递

/Users/khinester/Sandboxes/zeitgeist/Blade/server.js:5 
    application = require("./.app/")(); 
           ^
TypeError: object is not a function 
    at Object.<anonymous> (/Users/khinester/Sandboxes/zeitgeist/Blade/server.js:5:35) 
    at Object.<anonymous> (/Users/khinester/Sandboxes/zeitgeist/Blade/server.js:21:4) 
    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 Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:901:3 
DEBUG: Program node server exited with code 8 

DEBUG: Starting child process with 'node server' 
00:55:26 - compiled src/social.coffee 

我有结构我的应用程序如下:

☺ tree -L 3 . 
. 
├── Cakefile 
├── README.md 
├── server.coffee 
├── src 
│   ├── config 
│   │   ├── config.coffee 
│   │   ├── errors.coffee 
│   │   ├── i18n.coffee 
│   │   ├── models.coffee 
│   │   ├── passport.coffee 
│   │   └── routes.coffee 
│   ├── controllers 
│   │   ├── api.coffee 
│   │   ├── index.coffee 
│   │   ├── login.coffee 
│   │   ├── map.coffee 
│   │   └── user.coffee 
│   ├── index.coffee 
│   ├── models 
│   │   └── user 
│   │    └── user.coffee 
│   └── utils 
│    ├── dbconnect.coffee 
│    ├── emailer.coffee 
│    ├── i18n.coffee 
│    ├── logger.coffee 
│    └── passport.coffee 
└── views 
    ├── 404.blade 
    ├── 500.blade 
    ├── footer.blade 
    ├── forms 
    │   ├── federated-form.blade 
    │   ├── login-form.blade 
    │   └── registration-form.blade 
    ├── header.blade 
    ├── index.blade 
    └── user 
     ├── create.blade 
     ├── login.blade 
     └── user.blade 

server.coffee如下:

application = require("./.app/")() 
nowjs = require "now" 
port = process.env.PORT or process.env.VMC_APP_PORT or process.env.VCAP_APP_PORT or 3000 
server = application.listen(port) 
everyone = nowjs.initialize(server) 
console.log "Server running at http://127.0.0.1: "+ port + "\nPress CTRL-C to stop server." 

其编译为:

// Generated by CoffeeScript 1.6.2 
(function() { 
    var application, everyone, nowjs, port, server; 

    application = require("./.app/")(); 

    nowjs = require("now"); 

    if (!process.env.NODE_ENV) { 
    process.env.NODE_ENV = "local"; 
    } 

    port = process.env.PORT || process.env.VMC_APP_PORT || process.env.VCAP_APP_PORT || 3000; 

    server = application.listen(port); 

    everyone = nowjs.initialize(server); 

    console.log("Server running at http://127.0.0.1: " + port + "\nPress CTRL-C to stop server."); 

}).call(this); 

/app/index.coffee

#Load external dependencies 
express = require("express") 
stylus = require("stylus") 
mongoose = require("mongoose") 
i18next = require "i18next" 

#Load local dependencies 
models = require("./config/models") 
i18n = require("./config/i18n") 
config = require("./config/config") 
routes = require("./config/routes") 

#Load database dependencies 
dbconnection = require "./utils/dbconnect" 

#Load logger 
logger = require "./utils/logger" 

# Initialize logger 
logger.configure() 
logCategory = "APP config" 

# Create Server 
app = express() 
logger.info "---- App server created ----", logCategory 

#Exports 
module.exports = -> 
    # Load Mongoose Models 
    models app 

    # Load i18next config 
    i18n app 
    # Init i18next 
    i18next.init(app.i18n) 
    i18next.registerAppHelper(app) 
    # Load Expressjs config 
    config app 

    # Load routes config 
    routes app 

    app 

logger.info "---- Modules loaded into namespace ----", logCategory 
# Connect to database 
dbconnection.init (result) -> 
    if result 
    logger.info "Database initialized", logCategory 

所以,我每次运行应用程序时,我得到的类型错误,但在应用程序运行!

我在想什么,不理解?

任何意见非常赞赏。

回答

0

我有一个猜测 - 也许这是编译咖啡脚本和运行js之间的某种竞争条件?无论哪种方式,如果我是你,我会尝试隔离问题 - 在交互模式下打开节点(或咖啡) - 需要你的应用程序代码 - 你能调用函数吗?这是一个函数吗?目的? 尝试使用咖啡来运行您的应用程序而不是节点。你有同样的错误吗?

另一件事 - 你说它是在./app中,但是在你的代码中./.app - 我猜这不是问题,因为会发生不同的错误。

+0

我所有的代码都被编译成.js文件,当直接从节点控制台运行时,它被放到/.app中,我没有得到这个错误,这里是输出http://pastie.org/7925572会尝试直接使用咖啡来运行应用程序。 – khinester

+0

是的,它是一个Function.'> application = require(“./。app /”); [功能] >' – khinester

+0

从函数调用中分离需求。尝试记录require()返回的内容。它是一个对象吗?它的钥匙是什么?使用Object.keys() – surui

相关问题