Angular 2 / Typescript再出口:"未找到模块:无法解决[...]"

时间:2017-07-15 12:53:56

标签: angular typescript module

我正在使用Angular 2和Typescript。我正在尝试创建一个类集合,每个类都在自己的文件中定义,并且希望能够使用单个(或可能)更多的行来导入它们。

类似的东西:

// lib/foo.ts
export class Foo {}

// lib/bar.ts
export class Bar {}

// lib/index.d.ts
export * from './foo';
export * from './bar';

// app.component.ts
import * as lib from './lib';

...
let foo = new lib.Foo();
let bar = new lib.Bar();

我通过互联网搜索了一段时间,并在我的代码中尝试了很多可能的方法,但它们似乎都没有用。例如,在这个Stackoverflow answer中,它似乎与我的语法相同(上面的代码)。

那么也许这是一个特定角度的问题?

这是我收到的完整错误消息,当使用" ng serve" (在角度cli上):

ERROR in ./src/app/api-module/services/factory.service.ts
Module not found: Error: Can't resolve '../sketch-objects' in 'D:\[...]\PhpStorm\vector-sketch\src\app\api-module\services'
 @ ./src/app/api-module/services/factory.service.ts 8:0-51

虽然有以下作品的导入:

import {Scene} from '../sketch-objects/scene';


仅仅是为了理解:我正在编写一个处理threeJS的应用程序,并希望创建某种工厂,根据给定的特定字符串构建threeJS对象(或更确切地说,围绕threeJS对象的包装器)。例如我有一个功能

// factory.service.ts
import * as lib from './lib'

...
create(objectType: string): any {

  let threeObject = lib[objectType]();
  return threeObject;
}


我感谢任何帮助,谢谢。
bertiooo

1 个答案:

答案 0 :(得分:1)

您正在从两个地方导入单个服务,这会创建两个实例

  1. 请参阅此行

    import {Scene} from '../sketch-objects/scene';
    
  2. 从lib文件中第二次导入

    import * as lib from './lib'
    

    因此,当使用Sketch服务时,angular将不知道要选择哪个服务实例。

  3. 要解决此问题,请从同一路径导入服务

    注意: https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Wavefront_OBJ