Javascript THREE.js-未捕获类型错误

Javascript THREE.js-未捕获类型错误,javascript,three.js,Javascript,Three.js,我正在学习使用Web GL和THREE.js 我在YouTube上学习了一个教程,结果得到了下面的代码。此代码应显示一个立方体和一个轴。然而,当我试图显示包含此代码的页面时,我得到了一个Javascript错误。错误状态为: 未捕获类型错误:this.updateMorphTargets不是函数 我不确定我做错了什么,但我希望这里熟悉THREE.js的人能帮我解决这个问题。非常感谢你抽出时间 jQuery(document).ready( function($){ var scene

我正在学习使用Web GL和THREE.js

我在YouTube上学习了一个教程,结果得到了下面的代码。此代码应显示一个立方体和一个轴。然而,当我试图显示包含此代码的页面时,我得到了一个Javascript错误。错误状态为:

未捕获类型错误:this.updateMorphTargets不是函数

我不确定我做错了什么,但我希望这里熟悉THREE.js的人能帮我解决这个问题。非常感谢你抽出时间

jQuery(document).ready( function($){

    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight,.1, 500);
    var renderer = new THREE.WebGLRenderer();

    renderer.setClearColor(0x000000);
    renderer.setSize(window.innerWidth, window.innerHeight);

    var axis = new THREE.AxisHelper(10);

    scene.add(axis);

    var cubeGeometry = new THREE.BoxGeometry(5, 5, 5);
    var cubeMaterial = new THREE.MeshBasicMaterial({color: 0xdddddd, wireframe:true});
    var cube = THREE.Mesh(cubeGeometry, cubeMaterial);

    cube.position.x = 0;
    cube.position.y = 0;
    cube.position.z = 0;

    scene.add(cube);

    camera.position.x = 40;
    camera.position.y = 40;
    camera.position.z = 40;

    camera.lookAt(scene.position);

    $('#webgl-container').append(renderer.domElement);
    renderer.render(scene, camera);

});

您输入了一个简单的打字错误,忘记了
Three.MESH
之前的
new
操作符,因此应该是:

var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);

新的
new
操作符是一件大事,没有它,
THREE.Mesh
不再是一个构造函数,而是一个普通函数。这会导致函数内的
This
引用
三个
命名空间对象本身,而不是新创建的
网格
对象。
THREE
命名空间对象没有
updateMorphTarget()
方法,因此出现错误

查看错误的堆栈跟踪。它来自哪一行?当它试图调用this.updateMorphTargets()时,它来自three.js中的第16927行;这就是堆栈跟踪的来源吗?没有函数调用这个吗?你说:“三个对象没有updateMorphTarget()方法”,但你指的是三个命名空间对象。非常正确,当前的措辞可能会令人困惑。我已经编辑了答案,谢谢!精彩的观察!