首页 > 解决方案 > Google Closure - 在 ES6 模块类中导入旧类

问题描述

我有一个使用 ES5 编写的代码库,我想使用模块将部分代码更新为 ES6。这是我的代码:

goog.module('farm.animal.Cow');

// Legacy class using es5
var Animal = goog.require('namespace.Animal');

class Cow extends Animal {
  constructor() {
    super();
  }
}

exports = Cow;

这是遗留类

goog.provide('namespace.Animal');

namespace.Animal = function() {

};

我尝试遵循两个项目的 GitHub Wiki 上的迁移建议:

https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide

https://github.com/google/closure-compiler/wiki/Migrating-from-goog.modules-to-ES6-modules

但到目前为止还没有运气。大多数时候我收到以下错误:

depstree.NamespaceNotFoundError: Namespace "namespace.Animal" never provided.

有没有人知道如何迁移代码的正确方法?我究竟做错了什么?

标签: javascriptgoogle-closure-compilergoogle-closuregoogle-closure-library

解决方案


推荐阅读