three.js使用GLTFLoader的时候提示material.onBeforeRender is not a function

使用three.js的GLTFLoader加载外部模型的时候出现的报错,控制台不断的提示同一个错误信息,几秒钟就出现了几百个报错

<html>
    <head>
        <title>My first Three.js app</title>
        <meta charset="UTF-8"/>
        <script type="text/javascript" src="../node_modules/dat.gui/build/dat.gui.js"></script>
        <style>
            body { margin: 0;overflow: hidden; }
            canvas { width: 100%; height: 100% }
        </style>
    </head>
    <body>
        <div id="render_div">

        </div>
        <div id="my_stats"></div>
        <script type="module">
            import * as THREE from '../node_modules/three/build/three.module.js';
            import Stats from '../node_modules/stats.js/src/Stats.js';
            import { GLTFLoader } from "https://cdn.jsdelivr.net/npm/three@0.121.1/examples/jsm/loaders/GLTFLoader.js";


            var scene = new THREE.Scene();
            var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 1, 1000);
            camera.position.z = 40;
            camera.position.x = 50;
            camera.position.y = 200;
            var renderer = new THREE.WebGLRenderer();
            renderer.setSize(window.innerWidth, window.innerHeight);//设置渲染器大小
            renderer.shadowMap.enabled = true;//开启渲染器阴影渲染
            document.getElementById("render_div").appendChild(renderer.domElement);//在div中添加渲染器的dom元素

            var axes = new THREE.AxesHelper(50);//定义坐标轴并设置轴长
            scene.add(axes);

            // 基本光源会-均匀照亮-场景中的物体
            var ambientLight = new THREE.AmbientLight({color:0xAAAAAA});//创建lambert材质光源并设置颜色
            scene.add(ambientLight);


            // 聚光灯光源作为最常用的光源之一,是一种具有锥形效果的光源,和手电筒类似
            var spotLight = new THREE.SpotLight(0xAAAAAA);
            spotLight.castShadow = true;
            spotLight.position.set(-70, 40, 50);
            spotLight.shadow.mapSize = new THREE.Vector2(1024, 1024);
            spotLight.shadow.camera.far = 1000;
            spotLight.shadow.camera.near = 60;
            scene.add(spotLight);

            // 通过聚光灯对象添加两个聚光灯对象的辅助类
            var lightHelper = new THREE.SpotLightHelper(spotLight);
            scene.add(lightHelper);
            var shadowCameraHelper = new THREE.CameraHelper(spotLight.shadow.camera);
            scene.add(shadowCameraHelper);


            var planeGeometry = new THREE.PlaneGeometry(200, 200);
            var planeMaterial = new THREE.MeshLambertMaterial({color: 0xcccccc});
            var plane = new THREE.Mesh(planeGeometry, planeMaterial);
            plane.receiveShadow = true;
            plane.rotation.x = -Math.PI * 0.5; 
            scene.add(plane);

            var boxGeometry = new THREE.BoxGeometry(20, 20, 20);
            var boxMaterial = new THREE.MeshLambertMaterial({color : 0x0000ff});
            var box = new THREE.Mesh(boxGeometry, boxMaterial);
            box.castShadow = true;
            box.position.x = 0;
            box.position.y = 0;
            box.position.z = 0;
            scene.add(box);

            function addStats() {
                var stats = new Stats();
                stats.domElement.style.position = 'absolute';
                stats.domElement.style.left = '0px';
                stats.domElement.style.top = '0px';
                stats.setMode(0);
                document.getElementById("my_stats").appendChild(stats.domElement);
                return stats;
            }
            // 设置监听器
            var stats = addStats();

            // 设置三维场景自适应大小:场景自适应和相机自适应
            function onwindowResize() {
                camera.aspect = window.innerWidth/window.innerHeight;
                camera.updateProjectionMatrix();//相机的某些属性变化了,需要更新相机的投影矩阵属性
                renderer.setSize(window.innerWidth, window.innerHeight);
            }
            // 设置监听并调用自适应方法
            window.addEventListener("resize", onwindowResize, false);

            // 封装加载模型的方法------------------**错误出现在这个方法里面**
            function loadModel() {
                new GLTFLoader().setPath("../asset/")//GLTFLoader类可以用来加载gltf类型的模型
                .load("skyscraperF.glb",function(gltf) {
                    debugger
                    gltf.scene.scale.set(10, 10, 10);
                    scene.add(gltf.scene);
                })
            }
            loadModel();

            // 以下注释内容取自官网example
            // var loader = new GLTFLoader();
            // THREE.DRACOLoader.setDecoderPath( '/examples/js/libs/draco' );
            // loader.setDRACOLoader( new THREE.DRACOLoader() );

            // // Optional: Pre-fetch Draco WASM/JS module, to save time while parsing.
            // THREE.DRACOLoader.getDecoderModule();

            // // Load a glTF resource
            // loader.load(
            //     // resource URL
            //     'models/gltf/duck/duck.gltf',
            //     // called when the resource is loaded
            //     function ( gltf ) {

            //         scene.add( gltf.scene );

            //         gltf.animations; // Array<THREE.AnimationClip>
            //         gltf.scene; // THREE.Scene
            //         gltf.scenes; // Array<THREE.Scene>
            //         gltf.cameras; // Array<THREE.Camera>
            //         gltf.asset; // Object

            //     },
            //     // called while loading is progressing
            //     function ( xhr ) {

            //         console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );

            //     },
            //     // called when loading has errors
            //     function ( error ) {

            //         console.log( 'An error happened' );

            //     }
            // );


            var ctrlObj = {
                rotationSpeed: 0.01,
                positionX : 0, 
                positionY : 0, 
                positionZ : 0,
                ambientLightIntensity: 1,
                ambientLightColor: 0xffffff,

                spotLightIntensity: 1,
                spotLightColor: 0xffffff,
                spotLightDistance: 100,
                spotLightAngle: Math.PI/2,
                spotLightPenumbra: 0,
                spotLightDecay: 0,
            }

            var gui = new dat.GUI();
            gui.add(ctrlObj, "rotationSpeed", 0, 1);
            gui.add(ctrlObj, "positionX", -30, 30);
            gui.add(ctrlObj, "positionY", -30, 30);
            gui.add(ctrlObj, "positionZ", -30, 30);
            var ambientLightFolder = gui.addFolder("ambientLight");
            var spotLightFolder = gui.addFolder("spotLight");
            ambientLightFolder.add(ctrlObj, "ambientLightIntensity", 0, 5);
            ambientLightFolder.addColor(ctrlObj, "ambientLightColor").onChange(function(clr) {
                ambientLight.color = new THREE.Color(clr);
            });
            
            spotLightFolder.add(ctrlObj, "spotLightIntensity", 0, 5);
            spotLightFolder.addColor(ctrlObj, "spotLightColor").onChange(function(clr) {
                spotLight.color = new THREE.Color(clr);
            });
            spotLightFolder.add(ctrlObj, "spotLightDistance", 0, 500).onChange(function(dis) {
                spotLight.distance = dis;
            });
            spotLightFolder.add(ctrlObj, "spotLightAngle", 0, Math.PI*2).onChange(function(ang) {
                spotLight.angle = ang;
            });
            spotLightFolder.add(ctrlObj, "spotLightPenumbra", 0, 1).onChange(function(pnb) {
                spotLight.penumbra = pnb;
            });
            spotLightFolder.add(ctrlObj, "spotLightDecay", 0, 5).onChange(function(dcy) {
                spotLight.decay = dcy;
            });

        
            function renderScene() {
                stats.update();
                shadowCameraHelper.update();
                lightHelper.update();
                requestAnimationFrame(renderScene);//创建一个循环,进行高效的绘制
                box.position.set(ctrlObj.positionX, ctrlObj.positionY, ctrlObj.positionZ);
                ambientLight.intensity = ctrlObj.ambientLightIntensity;
                spotLight.intensity = ctrlObj.spotLightIntensity
                box.rotation.x += ctrlObj.rotationSpeed;
                camera.lookAt(box.position);
                renderer.render(scene, camera);
            }
            renderScene();
        </script>
    </body>
</html>

一直提示Uncaught TypeError: material.onBeforeRender is not a function

试过了官网提供的example,但是貌似存在一些其他问题导致没有明显的效果

希望能够成功在场景中导入模型