使用coffeescript运行我的node.js应用程序时,module.exports不缓存

时间:2013-01-06 22:41:57

标签: javascript node.js coffeescript

让我们说我有一个申请表:

./ app.coffee:

express = require "express"
module.exports = app = express()
require "./models"

./模型/ index.coffee

app = require "../app"

然后我运行命令:coffee app.coffee

问题是代码的运行方式与预编译时的运行方式不同。

当我使用node(已编译)运行我的应用时:

  • app.coffee需要models
  • models需要app并返回module.exports(app)

当我使用coffee运行我的应用时:

  • app.coffee需要models
  • models需要app,但app会再次运行并再次需要模型

使用coffee运行我的应用程序时,似乎module.exports无法正常工作。或者也许我做错了什么?

1 个答案:

答案 0 :(得分:1)

节点管理module cycles的行为有所改变,使用coffee可执行文件时似乎不支持该行为:

  

当有循环require()调用时,返回时可能无法执行模块。

     

[...]

     

main.js加载a.js时,a.js依次加载b.js。此时,b.js尝试加载a.js。为了防止无限循环,a.js导出对象的未完成副本将返回到b.js模块。然后b.js完成加载,并将其exports对象提供给a.js模块。

如果可以的话,尽量避免循环。一种可能的选择是:

express = require "express"
module.exports = app = express()
models = require "./models"
models app
module.exports = (app) ->
  # ...