首页 > 解决方案 > Angular 模块不适用于 esnext 模块配置

问题描述

我目前正在逐步更新遗留代码库,并且遇到了模块/命名空间的一些问题。

我们有一个models.ts看起来像这样的文件

angular.module('models', ['ngResource']);
import './company';

在里面company.ts,我们声明了一个带有工厂函数的命名空间ACCompany,然后我们注册到'models'模块中。

namespace Company {
  ....
  export function ACCompany(
  $log: ng.ILogService,
  $q: ng.IQService,
  $resource: ng.resource.IResourceService,
  conf: IACConf,
 ) { ... }
}

angular.module('models').factory('CompanyAPI', Company.ACCompany);

这曾经可以正常工作,但最近我将module密钥更改tsconfig为“esnext”,将moduleResolution密钥更改为“节点”。突然间,“模型”模块似乎不可用。

哈普?

标签: angulartypescriptmodule

解决方案


问题基本上是 es6 模块是静态分析的。所以 in 中的代码在company.ts.in 中的代码之前被执行models.ts

我的解决方案是创建另一个导入models.ts(第一个)和company.ts(第二个)的文件,然后更改modles.tsangular.module('models', ['ngResource']);语句


推荐阅读