2017-08-15 15 views
0

最初の試行では、node_modulesからの通常のインポートを使用しました。次のステップでは、以前のバージョンのThreeを使用しました。 jsライブラリに変更を加えることなく。私は、3つのobj-loaderモジュールをインポートした例を見つけ、それを試してみましたが、出力でなぜOBJLoaderが構築されないのですか? 多くのおかげです。ReactでThree.js obj-loaderを使用する

WebPACKのセットアップでは、この

import OB from './ObjLoader'; 
import * as THREE from './three'; 
// var THREE = require('three/examples/js/loaders/OBJLoader');// 
// var manager = new LoadingManager();// 
// var loader = new THREE.OBJLoader(manager); 
// import 'three'; 
// var loader = new OBJLoader(manager); 
var OBJLoader = require('three-obj-loader')(THREE) 
var manager = new TH.LoadingManager(); 
manager.onProgress = function (item, loaded, total) { 
    console.log(item, loaded, total); 
}; 
// model 
// var loader = new OB(manager); 

in function 
export function loadModelOBJ(path) { 
    return new Promise((resolve, reject) => { 
     loader.load(
      path, 
      resolve, 
      () => null, 
      error => reject 
     ); 
    }); 
} 

のようなローダーをインポートI`m:

var webpack = require('webpack'); 
var path = require('path'); 
module.exports = { 
    devtool: 'inline-source-map', 
    entry: { 
     main: './src/client.js' 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.js?$/, 
       exclude: /node_modules/, 
       loaders: [ 'babel', 'eslint-loader' ] 
      }, 
      { test: /\.json$/, loader: 'file' }, 
      { test: /\.jpg$/, loader: 'file' }, 
      { test: /\.obj$/, loader: 'file' }, 
      { test: /\.scss$/, loaders: [ 'style', 'css', 'sass' ] } 

     ] 
    }, 
    plugins:[ 
     new webpack.ProvidePlugin({ 
      'THREE': 'three' 
     }), 
    ], 
    progress: true, 
    resolve: { 
     extensions: ['', '.json', '.js'], 
     alias: { 
      'three/OrbitControls': path.join(__dirname, 'node_modules/three/examples/js/controls/OrbitControls.js'), 
      'three/OBJLoader': path.join(__dirname, 'node_modules/three/examples/js/loaders/OBJLoader.js') 
      // ... 
     } 
    }, 
    output: { 
     path: 'build/', 
     filename: 'bundle.js' 
    } 
}; 

そしてpackpage:

{  
    "scripts": { 
    "start": "webpack-dev-server --content-base build" 
    },  
    "dependencies": { 
    "autobind-decorator": "^1.3.3", 
    "babel-core": "^6.7.6", 
    "babel-loader": "^6.2.1", 
    "babel-plugin-add-module-exports": "^0.1.2", 
    "babel-plugin-transform-decorators-legacy": "^1.3.4", 
    "babel-plugin-transform-runtime": "^6.9.0", 
    "babel-preset-es2015": "^6.3.13", 
    "babel-preset-react": "^6.3.13", 
    "babel-preset-stage-0": "^6.3.13", 
    "babel-register": "^6.3.13", 
    "babel-runtime": "^6.3.19", 
    "css-loader": "^0.23.1", 
    "file-loader": "^0.8.5", 
    "json-loader": "^0.5.4", 
    "node-sass": "^3.7.0", 
    "react": "^15.3.1", 
    "react-dom": "^15.1.0", 
    "react-three-renderer": "^3.2.1", 
    "sass-loader": "^3.2.0", 
    "style-loader": "^0.13.1", 
    "three": "^0.84.0", 
    "three-obj-loader": "^1.1.2" 
    }, 
    "devDependencies": { 
    "babel-eslint": "^6.0.4", 
    "babel-plugin-react-transform": "^2.0.0", 
    "clean-webpack-plugin": "^0.1.6", 
    "eslint": "^2.10.2", 
    "eslint-loader": "^1.3.0", 
    "eslint-plugin-import": "^1.8.0", 
    "eslint-plugin-react": "^5.1.1", 
    "webpack": "^1.12.9", 
    "webpack-dev-server": "^1.14.1" 
    } 
} 

私はこの例に従っ:

Using webpack, threejs examples, and typescript?

What is the proper way to get Three.js used within Webpack so I can use OrbitControls?

three.js OBJLoader not loading in react

更新: また、私は成功せず、この場合(外部OBJ-ローダー)を使用。私は正しい設定でプロジェクトをセットアップすることに問題があると思います。私は3つのリポジトリからwebpackプラグインのimporters-loaderを使ってobj-loaderを使用していました。それは動作します、3つはobj-loaderのためにグローバルになりますが、エラーで終了しました:OBJLoaderはコンストラクタではありません。異なるバージョンのobj-loaderをコピーしても、何も私を助けませんでした。このエラーメッセージは本当にイライラしています...

誰かがReact、Three、ObJLoaderとプロジェクトを共有できたら、私は感謝します。

さらに移動することができ、この男と彼の仕事、https://www.npmjs.com/package/three-react-obj-loader I`mのおかげで、それでも私は間違いがあった場所を知りたい.... I`mがTHREE.87.1を使用して

メインコンフィギュレーションが反応16 Webpack 3.6.0

答えて

0

私は同様の問題がありましたが、正しくインポートしていないようです。あなたはNPMパッケージがインストールされている場合は、これが私の作品「./」でそれらをインポートする必要はありません:呼び出し、あなたのリアクトクラスのコンストラクタメソッドで次に

import React, { Component } from 'react'; 
import * as THREE from 'three'; 
import React3 from 'react-three-renderer'; 
import OBJLoader from 'three-obj-loader'; 

OBJLoader(THREE); 

var loader = new THREE.OBJLoader(); 

そこからconsole.log(loader)にアクセスできるようになり、コンソールのTHREE.OBJLoader関数を参照してください。

これが役立つかどうか教えてください。

関連する問題