Angular 2/Typescript转出口:“未找到模块:无法解析[...]”
问题描述:
我正在使用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
答
您从中创建两个实例
-
看到这一行
import {Scene} from '../sketch-objects/scene';
-
其次进口从库文件
import * as lib from './lib'
两个地方进口单服务所以角度不会知道wh在使用Sketch服务时选择服务实例。
从相同的路径解决这个问题,进口服务
什么是使用具有'进口*从 './lib' LIB ' – Aravind
如此处所述:[link](https://www.typescriptlang.org/docs/handbook/modules.html#import-the-entire-module-into-a-single-variable-and-use-it-访问模块导出),可以将整个模块导入到单个变量中并使用它来访问模块出口 – bertiooo
好吧,你指出我在正确的方向。我认为模块加载器在编写“./lib”时会自动寻找index.d.ts,但显然没有找到任何东西。现在我编写了'./lib/index'并且工作正常!谢谢! – bertiooo