这涉及到这个问题here这一个here但那些都适合我的需要。加载第三方库角CLI
我在迁移的Angular2应用到angular-cli
结构,我想包括.OBJLoader
& .MTLLoader
为threejs
库在我移植的项目。
我已经包括从threejs
节点文件夹中的脚本在我.angular-cli.json
文件是这样的:
"styles": [
"styles.css"
],
"scripts": [
"../node_modules/three/examples/js/loaders/OBJLoader.js",
"../node_modules/three/examples/js/loaders/MTLLoader.js"
],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
因为.OBJLoader
& .MTLLoader
没有分型我想我不得不创建它们自己在typings.d.ts
文件:
/* SystemJS module definition */
declare var module: NodeModule;
interface NodeModule {
id: string;
}
// OBJLoader
declare var objloader: OBJLoader;
interface OBJLoader {
}
// MTLLoader
declare var mtlloader: MTLLoader;
interface MTLLoader {
}
然后我试图将模块导入到服务需要我在他们这样的:
import { Injectable } from '@angular/core';
import * as THREE from 'three';
import * as OBJLoader from 'OBJLoader';
import * as MTLLoader from 'MTLLoader';
@Injectable()
export class LoaderService {
constructor() {}
setupMTLLoader(appPath) {
var mtlLoader = new MTLLoader();
return mtlLoader;
}
setupObjLoader(materials, appPath) {
var objLoader = new OBJLoader();
return objLoader;
}
}
但angular-cli
抱怨说:
Module not found: Error: Can't resolve 'OBJLoader' in '/my-path/src/app/shared/services'
@ ./src/app/shared/services/loader.service.ts 12:0-39
几个问题在这里:
- 什么我需要改变,以得到这个工作?
- Typings文件夹是否检查
node_nodules
中@types
文件夹的声明类型? - 脚本如何在脚本中加载并使其可用?
我很困惑在这里做什么。
嘿,那里,只是好奇,如果你使用此功能迁移到Angular v5.xx时会遇到任何问题 –