我有一个使用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-compiler/wiki/Migrating-from-goog.modules-to-ES6-modules
但是到目前为止还没有运气。大多数情况下,我会出现以下错误:
depstree.NamespaceNotFoundError: Namespace "namespace.Animal" never provided.
有人对如何正确迁移代码有任何想法吗?我在做什么错了?
答案 0 :(得分:0)
您寻求的东西是可能的,因为不同的模块声明可以共存于同一代码库中,但是您的问题是缺少信息,即您如何使用两个类以及正在使用哪些编译器参数。无论是从旧名称空间导入farm.animal.Cow
还是从goog.module
导入,都同样重要。您是否有机会更新您的问题以包含“ main()
模块/功能”(可以这么说)?
要遵循SO准则,我将尝试使用到目前为止的可用信息进行回答:
farm.animal.Cow
吗?在goog.declareLegacyNamespace('farm.animal.Cow')
声明下添加goog.module
namespace.Animal
缺少重要的/** @constructor */
注释。[没有足够的声誉来发表评论。一旦能够,我将将该答案的评论部分迁移到适当的评论。]