Javascript VSCode找不到模块的类型定义
我有一个带有/@ts check的.js文件(因此它是javascript而不是typescript,但是正在进行类型检查并从.ts声明中获取Intellisense信息) My.js文件与node_modules目录处于同一级别。 所以我像这样导入了三个.js:Javascript VSCode找不到模块的类型定义,javascript,typescript,visual-studio-code,three.js,Javascript,Typescript,Visual Studio Code,Three.js,我有一个带有/@ts check的.js文件(因此它是javascript而不是typescript,但是正在进行类型检查并从.ts声明中获取Intellisense信息) My.js文件与node_modules目录处于同一级别。 所以我像这样导入了三个.js: import * as THREE from './node_modules/three/src/three.js' 后来我用它做了一些事情。例如: const camera = new THREE.OrthographicCame
import * as THREE from './node_modules/three/src/three.js'
后来我用它做了一些事情。例如:
const camera = new THREE.OrthographicCamera( -f2, f2, f2, -f2, near, far );
camera.zoom = 0.5;
camera.up = new THREE.Vector3(0, 0, 1);
camera.lookAt(origin.x, origin.y, origin.z);
然而,根据TSC,camera.up给出了错误;“类型正交摄影机上不存在属性up。”摄影机的属性同上。lookAt()。但是它确实存在,并且代码运行良好。换句话说:typescript找不到类型定义
但是,我已将three.js的@types定义安装到同一个node_modules目录中,因此我的目录结构如下所示:
ex.js
node_modules
+ @types
+ three
+ three
现在,如果我这样导入:
import * as THREE from 'THREE';
所有先前标记的错误都会消失。然而,这并不适用。(浏览器尝试加载时会出现未找到错误。)
几个月前,Three.js将其.ts声明文件作为Three.js库的一部分进行维护,并将其作为单独的产品“外包”到@types区域。([https://www.npmjs.com/package/@种类(三[1])
在这种情况下
import * as THREE from './node_modules/three/src/three.js'
很好
我不停地摆弄着一个tsconfig.json文件——目前看起来像这样:
{
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"module": "es6",
"noImplicitAny": true,
"sourceMap": true,
"outDir": "../dst/",
"target": "ESNEXT",
//"typeRoots": [
// "./node_modules/@types"
//]
},
"include": [
"**/*",
"index.d.ts", // declaration file path
],
"lib": [
"es2016"
]
//"exclude": [
// "./node_modules",
//]
}
但似乎什么都不管用。有人能解释一下吗
注意:
不要从
../three/src/three.js
导入,而是尝试从../three/build/three.module.js
导入,看看是否有帮助@马奎佐,是的,对不起,也许应该说,但我已经试过了,也没用。