Javascript ML5,情绪分析:未捕获(承诺中)类型错误:无法读取属性';';未定义的

Javascript ML5,情绪分析:未捕获(承诺中)类型错误:无法读取属性';';未定义的,javascript,ml5,Javascript,Ml5,我正在尝试使用ML5情绪api评估一本书的情绪: const sentiment = ml5.sentiment('movieReviews', modelReady) // When the model is loaded function modelReady() { // model is ready console.log("Model Loaded!"); } // make the prediction fetch('../../data/brothe

我正在尝试使用
ML5情绪
api评估一本书的情绪:

const sentiment = ml5.sentiment('movieReviews', modelReady)

// When the model is loaded
function modelReady() {
  // model is ready
  console.log("Model Loaded!");
}

// make the prediction
fetch('../../data/brothers.txt')
  .then(response => response.text())
  .then(text => {
    const prediction = sentiment.predict(text)
    console.log(prediction)
    createDiv('predicted sentiment - ' + prediction)
  })  

function setup() {
}
文本
加载良好,我可以将其打印到控制台。以下错误发生在使用
predict
方法的线路上:


如果我用一个单词替换
文本
,错误保持不变。那么,我在这里做错了什么,如何使事情工作?

它不工作,因为在加载模型之前调用了函数(正如@dwosk所指出的)。对
predict
的调用必须在模型准备就绪后完成

换句话说,函数必须在A处调用,而不是在B处调用:

function modelReady() {
  console.log("Model Loaded!");
  [A: THIS LOADS WHEN THE MODEL IS READY]
}

[B: THIS LOADS BEFORE THE MODEL IS READY]
以下是一个工作示例:


请注意,为了简单起见,
fetch
函数被模拟为返回“一只美丽的快乐猫”。

尝试在
response.text()之前添加
return
。如果您正在链接一个承诺,如果您不返回任何内容,那么它将调用下一个
.then()
带有
未定义的
@dwosk不必要啊,你说得对,我在fetch文档中看到它的链接设置与OPAre相同。你确定
predict
以字符串作为参数吗?也许你在加载模型之前调用
fetch