我目前正在使用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');
答案 0 :(得分:0)
在您的示例中,第二个module.exports
取消了第一个module.exports = Player;
被module.exports = Song;
覆盖 - 并且Player
从未实际导出。
在不知道为什么需要从单个文件定义和使用多个模块的情况下,我建议您尝试每个模块使用一个文件,这会导致更多文件,但整体代码结构更简单。
如果您对多个文件的关注是关于捆绑和分发的,那么可以使用各种构建工具将它们捆绑到一个文件中,以实现此目的。
我希望这有用。