Javascript VSCode找不到模块的类型定义

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

我有一个带有/@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.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",
    //]
}

但似乎什么都不管用。有人能解释一下吗

注意:

  • 我真的不想把它转换成一个.ts文件。我刚刚学会了javascript,不喜欢弄清楚完整的typescript环境
  • 是的,我可以继续交换两个导入行,这样在编辑时我可以让typescript工作,然后在运行时让javascript引擎找到模块。。。但每次我从编辑切换到测试时,都不得不这么做,这真让人恼火

  • 不要从
    ../three/src/three.js
    导入,而是尝试从
    ../three/build/three.module.js
    导入,看看是否有帮助@马奎佐,是的,对不起,也许应该说,但我已经试过了,也没用。