从CoffeeScript调用JavaScript“new”

我正在尝试在CoffeeScript代码中重用JavaScript库(sim.js)。 在sim.js的例子中,有3个文件,“sim-0.26.js”,“buffet_restaurant.js”和“buffet_restaurant.html”这样连接在一起(为了简化,我省去了一些参数):

在“buffet_restaurant.html”里面,有

<script type="text/javascript" src="./buffet_restaurant_files/sim-0.26.js"></script> <script type="text/javascript" src="./buffet_restaurant_files/buffet_restaurant.js"></script> <script type="text/javascript"> $(function () { $("#run_simulation").click(function () { var results = buffetRestaurantSimulation(); ... 

buffetRestaurantSimulation是buffet_restaurant.js中的一个函数。 在buffet_restaurant.js中的代码是这样开始的:

 function buffetRestaurantSimulation() { var sim = new Sim(); ... 

其中Sim是在sim-0.26.js中定义的,如下所示:

 function Sim(){...}; 

这个例子运行良好。 我想在node.js的CoffeeScript文件中重复使用“Sim”。 所以我试试这个(从jasmine-node调用):

 sjs = require "./sim-0.26.js" mysim = new sjs.Sim() 

其中sim-0.26.js与testsim.spec.coffee(包含此代码的文件)位于同一目录中。 当我调用这个使用:

 jasmine-node --coffee ./testsim.spec.coffee 

我得到这个:

 mysim = new sjs.Sim(); ^ TypeError: undefined is not a function 

我怀疑我做了很多错误的事情。 我对这一切都很陌生。

有任何想法吗?

除非Sim被添加到exports ,否则在require d时将不可用 – 请参阅模块上的文档以获取有关Node.js模块需要编写的方式的更多信息。

如果这需要在浏览器和节点中工作,那么只需将其添加到sim.js的代码中sim.js

 var root = typeof exports === "object" ? exports : window; root.Sim = Sim;