茉莉花& requirejs支持多模块?

时间:2016-05-30 02:25:41

标签: node.js requirejs jasmine jasmine-node

我目前正在使用Jasmine(" jasmine":" ^ 2.4.1")与Node v6.1.0

我都在尝试在一个文件中提供和使用多个模块 - 但是不断出现像对象undefined或null等错误。

我玩过不同的语法风格,但不能正确使用,我哪里出错?

Jasmine和RequireJs的文档都没有帮助。

在我的模块中,我这样导出:

function Player() {
}

Player.prototype.play = function(song) {
  this.currentlyPlayingSong = song;
  this.isPlaying = true;
};

Player.prototype.pause = function() {
  this.isPlaying = false;
};

Player.prototype.resume = function() {
  if (this.isPlaying) {
    throw new Error("song is already playing");
  }

  this.isPlaying = true;
};

Player.prototype.makeFavorite = function() {
  this.currentlyPlayingSong.persistFavoriteStatus(true);
};

module.exports = Player;

function Song() {
}

Song.prototype.persistFavoriteStatus = function(value) {
  // something complicated
  throw new Error("not yet implemented");
};

module.exports = Song;

当我在我的规范中消费时:

var { Player, Song } = require('../app/example-module');

1 个答案:

答案 0 :(得分:0)

在您的示例中,第二个module.exports取消了第一个module.exports = Player;module.exports = Song;覆盖 - 并且Player从未实际导出。

在不知道为什么需要从单个文件定义和使用多个模块的情况下,我建议您尝试每个模块使用一个文件,这会导致更多文件,但整体代码结构更简单。

如果您对多个文件的关注是关于捆绑和分发的,那么可以使用各种构建工具将它们捆绑到一个文件中,以实现此目的。

我希望这有用。