2017-02-11 3 views
2
var THREE = require('three'); 
require('three/examples/js/loaders/OBJLoader.js'); 

node_modules에서 3js를 요구 한 후에는 제공하는 OBJLoader를 사용하기로 결정했지만 예기치 않은 오류가 발생합니다. OBJLoader 내부 예상대로 작동하지 않아도됩니다.

THREE is not defined 
    at eval (eval at <anonymous> (experiment.js:133), <anonymous>:5:1) 

: 난 그냥 이상을 요구하지만

THREE.OBJLoader = function (manager) 

이 나에게 OBJLoader 내부의 세 가지를 알려줍니다이 정의되어 있지 않습니다. 이 방법으로 파일을 요구할 때 어떻게해야합니까?

+0

코드 작성 방법은 무엇입니까? Browserify, Webpack 등? –

답변

3

인해 three.js를에 특히 코드가 정의되는 전역 변수 THREE에 의존하는 예이다에서, 그것은 browserify 및 좋아 가진 사람을 사용하는 약간 복잡입니다.

const THREE = require('three'); 

// make three available for files from examples 
window.THREE = THREE; 

// load stuff from examples 
require('three/examples/js/loaders/OBJLoader.js'); 

module.exports = THREE; 

그리고 모든 곳에서 프로젝트 사용 const THREE = require('./three-loader'); 대신 require('three');에 : 나는 주로 browserify-프로젝트에 무슨 짓을

은 다음과 같습니다 파일 three-loader.js을 만드는 것이 었습니다.

또 다른 옵션은 examples 폴더의 파일을 프로젝트에 복사하고이 파일의 맨 위에 const THREE = require('three'); 줄을 추가하는 것입니다.

-1

설치되지 않은 노드 모듈을로드하려고했기 때문입니다. 때로는 모듈과 관련된 다른 종속성도 설치되지 않았으므로 실패 할 수 있습니다. 내가 너라면 npm까지 가서 npm install three을 입력 한 다음 var three = require('three');으로 입력해야한다. NPM에

링크 : https://www.npmjs.com/package/three

편집 : 당신이 나와있는 오류는 모듈이 내가 당신을 포함하고 어쩌면 다른 의존하고있는 길과 더 생각 그 이유는 전혀 발견되지 않는 것을 의미한다 잘. NPM 설치는 일반적으로 모든 것을 수정합니다. 그리고 당신이 필요로하는 객체에 메서드를 사용하기 만하면됩니다. 표준 도트 표기법을 사용하십시오.

+0

Threejs는 이미 내 node_modules –

0

three/examples/js/loaders/OBJLoader.js 파일은 필요하지 않습니다. module.exports은 없습니다. 여전히 파일의 문맥에서 코드를 실행하려고 시도 할 것이고 그 파일의 컨텍스트에서 변수 THREE이 정의되어 있지 않습니다. 해당 파일은 창/전역 변수 THREE가 정의 된 브라우저에로드되도록 설계되었습니다.

Three.js를 클라이언트 측 라이브러리입니다 - 브라우저에서로드하는 것은 당신이 스크립트 태그를 사용할 수 있습니다 : 당신은 다음의 예를로드 할 수 있도록 브라우저에서 변수 THREE을 설정합니다

<script src="js/three.min.js"></script> 

를 통해 OBJLoader.js :

<script src="js/OBJLoader.js"></script> 
+0

에 있습니다. 그래서 3 개가 필요하지만 html로 objloader를로드 할 수 있습니까? –

+0

왜 three.js에'require'를 사용하고 있습니까? 그것은 클라이언트 측 라이브러리입니까? – hackerrdave

관련 문제