无法在Typescript中使用js文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Typescript中使用js文件相关的知识,希望对你有一定的参考价值。

我正在尝试在Angular应用程序中使用Three.js.

要导入三,我只是跟着doc。所以我有这个:import * as THREE from 'three';

我也做了npm install @types/three --save

当我尝试使用OBJLoader2使用我的模型时出现问题

首先,医生说使用var loader = new THREE.OBJLoader2();。但实际上,THREE.OBJLoader2没有在'three'中定义,它在three/examples/js/loaders/OBJLoader2.js中定义,正如我在the official example中找到的那样。

所以,我尝试以多种方式导入此文件,但我无法使其工作。我天真地尝试以这种方式导入文件:import ../../node_modules/three/examples/js/loaders/OBJLoader2.js';它正在编译但我在导航器中有这个错误

OBJLoader2.js:8未捕获的ReferenceError:未在eval(OBJLoader2.js:8)处定义对象... / .. / .. / .. / three / examples / js / loaders / OBJLoader2.js(供应商。 bundle.js:430)

该文件如下所示:

'use strict';
if ( THREE.OBJLoader2 === undefined ) { THREE.OBJLoader2 = {} }
THREE.OBJLoader2 = (function () { ... })()

它接受THREE全局定义,但TREE只存在于我的组件中,所以我理解错误。

在导入文件之前,我还尝试声明三:

declare var THREE;

要么

declare global{
  interface Window{THREE:any;}
}
import * as THREE from 'three';
window.THREE = THREE;

最后一个代码使错误消失,但是当我尝试使用加载器时

var loader = THREE.OBJLoader2();
loader.load('assets/untitled1.obj', callbackOnLoad, null, null, null, false);

我懂了 :

错误TypeError:无法在AppComponent.initCube上读取未定义的属性'load'(app.component.ts:52)

所以我被困在这里,我在互联网上找不到任何东西,相信没有人试图在Typescript中使用three.js导入模型。

任何帮助将不胜感激。非常感谢你提前

答案

我没试过,但看起来https://bountify.co/angular-cli-three-js-blank-project-using-typescript-3有一个解决方案

我相信重点是:

  1. npm安装三个--save
  2. npm install @ types / three --save-dev
  3. 从'三'进口*为三

听起来你已经在做#1和#2了

以上是关于无法在Typescript中使用js文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 getStaticProps 获取数据 Next.js 和 Typescript

使用 TypeScript 在 Node.js 中进行 Sequelize - 没有“new”就无法调用类构造函数模型

如何使用 typescript 在外部 js 文件中调用函数

Webpack 4,Vue 同时使用 Typescript 类和 JS 代码。

Typescript编译器无法从Promise resolve调用中推断类型

如何在带有 typescript 项目的 react js 中使用 .env 文件?