1

我正在尝试在 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

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

有任何想法吗?

4

1 回答 1

4

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

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

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

root.Sim = Sim;
于 2012-08-17T02:17:51.883 回答