当require.js加载Three.js(修订版= 80)时,THREE为'undefined'

时间:2016-10-31 05:25:29

标签: three.js requirejs

require.config({
baseUrl:'resource',
paths:{
    'three': 'lib/threeJS/three.min',
    'OrbitControls': 'lib/threeJS/OrbitControls'
},
shim:{
    'OrbitControls': {
        deps: ['three'],
        exports:'OrbitControls'
    }
}    
});
require(['OrbitControls'],function (OrbitControls) {
});

我的测试代码如上所示,当我调试此代码时,控制台输出

  

THREE是'OrbitControls.js:16未捕获的ReferenceError:THREE未定义(...)'。

然而, Three.js(revision = 75)没有问题。所以我查看了three.js的源代码,并发现了一些不同之处。最重要的是不同的模态方法。 Three.js(revision = 80)从:

开始
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.THREE = global.THREE || {})));
}(this, (function (exports) { 'use strict';

所以任何人都可以告诉我如何使用require.js添加此版本的three.js?另外,我的require.js是ver。 2.1.19

2 个答案:

答案 0 :(得分:0)

你必须在路径上定义js的路径:我认为你已经写了js名字。请更改它,然后在垫片标签中使用它的名称加载js。

也请参考hear

中的代码

答案 1 :(得分:0)

在使用之后附加此代码是正确的:

define('three', ['../js/lib/threejs/three.82.min'], function ( THREE ) { window.THREE = THREE; return THREE; });