You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow.js TypeScript示例中await报错及yield保留字问题求助

解决TypeScript中TensorFlow.js的await报错与模块解析问题

看起来你碰到了两个TFJS+TS搭配的典型坑,我来一步步帮你拆解解决:

一、await使用问题:loss undefined & async修饰错误

首先得明确一个核心规则:await只能在标记为async的函数内部使用,你说给model变量加async肯定是错的——async是用来修饰函数的,不是变量!

正确的使用姿势:

  1. 把调用model.fit()(或其他异步TFJS方法)的代码放到async函数里:
async function trainModel() {
  const model = tf.sequential({
    layers: [tf.layers.dense({units: 1, inputShape: [1]})]
  });
  model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});

  // 这里用await是安全的,因为在async函数内部
  const history = await model.fit(xs, ys, {epochs: 10});
  console.log(history.history.loss); // 现在loss不会是undefined了
}

// 调用async函数,记得捕获可能的错误
trainModel().catch(err => console.error(err));
  1. 如果是在类的方法里使用,把方法标记为async即可:
class ExperimentModels {
  async train() {
    const model = tf.sequential(...);
    model.compile(...);
    const history = await model.fit(...);
    console.log(history.history.loss);
  }
}

为什么移除await后loss会undefined?

因为model.fit()返回的是一个Promise,直接调用的话还未完成异步操作,拿到的history是未resolved的Promise对象,自然没有history.history.loss这个属性。必须用await等待Promise完成,才能拿到实际的训练历史对象。

二、模块解析错误:"The keyword 'yield' is reserved"

这个错误通常是因为你的TypeScript或webpack配置没有正确支持ES6生成器语法(yield是生成器函数的关键字),TFJS内部可能用到了生成器,所以需要调整配置:

解决步骤:

  1. 检查tsconfig.json,确保开启ES6+相关支持:
{
  "compilerOptions": {
    "target": "ES2017", // 至少设置为ES2015,推荐ES2017及以上
    "lib": ["ES2017", "DOM"], // 包含DOM适配浏览器环境
    "downlevelIteration": true, // 关键配置:支持生成器的降级处理
    "module": "ESNext", // 或CommonJS,根据你的打包工具选择
    "moduleResolution": "node"
  }
}
  1. 如果使用webpack配合babel,需要安装插件处理生成器:
    先安装依赖:

    npm install @babel/plugin-transform-regenerator --save-dev
    

    然后在babel.config.json中添加插件:

    {
      "plugins": ["@babel/plugin-transform-regenerator"]
    }
    

    若用ts-loader,确保webpack已正确读取tsconfig的配置。

  2. 升级TFJS版本:如果是旧版本可能存在兼容性问题,建议更新到最新稳定版:

npm install @tensorflow/tfjs@latest --save

额外排查点:

如果你的代码里不小心把yield用作变量名或其他非生成器场景,也会触发这个错误——但根据报错路径,大概率是TFJS模块内部的语法兼容问题,优先调整配置即可。


内容的提问来源于stack exchange,提问作者user6600549

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:15:41