2017-07-15 90 views
0

我正在使用Angular 2和Typescript。我试图创建一个类的集合,每个类都在自己的文件中定义,并且希望能够使用单个(或可能)多个行来导入它们。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服务”(对角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:

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


只是为了理解:我正在编写一个应用程序,它处理三个JS,并且想要创建某种工厂,根据给定的特定字符串构建三个JS对象(或者更准确地说,围绕一个三维对象)。 PLE我有一个函数

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

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

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


我感谢所有帮助,谢谢。
bertiooo

+1

什么是使用具有'进口*从 './lib' LIB ' – Aravind

+0

如此处所述:[link](https://www.typescriptlang.org/docs/handbook/modules.html#import-the-entire-module-into-a-single-variable-and-use-it-访问模块导出),可以将整个模块导入到单个变量中并使用它来访问模块出口 – bertiooo

+0

好吧,你指出我在正确的方向。我认为模块加载器在编写“./lib”时会自动寻找index.d.ts,但显然没有找到任何东西。现在我编写了'./lib/index'并且工作正常!谢谢! – bertiooo

回答

1

您从中创建两个实例

  1. 看到这一行

    import {Scene} from '../sketch-objects/scene'; 
    
  2. 其次进口从库文件

    import * as lib from './lib' 
    

    两个地方进口单服务所以角度不会知道wh在使用Sketch服务时选择服务实例。

从相同的路径解决这个问题,进口服务

注:Also see this answer

相关问题