在项目中尝试使用.mtl文件。我添加了这个第三方库' three-mtl-loader'这样做。但是文件没有解决。项目使用react.js作为前端,并希望制作可视化3d对象的组件。用于那三个.js,react-three-renderer。我从mtl loader开始,但需要obj加载器,但认为这将是相同的。任何想法。
这是错误:
Module build failed: Error: Final loader didn't return a Buffer or String
at runLoaders (/home/vonrepiks/eternity/node_modules/webpack/lib/NormalModule.js:201:46)
at /home/vonrepiks/eternity/node_modules/loader-runner/lib/LoaderRunner.js:370:3
at iterateNormalLoaders (/home/vonrepiks/eternity/node_modules/loader-runner/lib/LoaderRunner.js:211:10)
at iterateNormalLoaders (/home/vonrepiks/eternity/node_modules/loader-runner/lib/LoaderRunner.js:218:10)
at /home/vonrepiks/eternity/node_modules/loader-runner/lib/LoaderRunner.js:233:3
at runSyncOrAsync (/home/vonrepiks/eternity/node_modules/loader-runner/lib/LoaderRunner.js:124:12)
at iterateNormalLoaders (/home/vonrepiks/eternity/node_modules/loader-runner/lib/LoaderRunner.js:229:2)
at Array.<anonymous> (/home/vonrepiks/eternity/node_modules/loader-runner/lib/LoaderRunner.js:202:4)
at Storage.finished (/home/vonrepiks/eternity/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:40:15)
at /home/vonrepiks/eternity/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:77:9
at /home/vonrepiks/eternity/node_modules/graceful-fs/graceful-fs.js:78:16
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3)
@ ./app/javascript/components ^。/。* $ @ ./app/javascript/packs/application.js
这是装载机:
module.exports = {
test: /\.mtl$/,
loader: 'three-mtl-loader',
};
这是web.config:
const webpack = require('webpack')
const { basename, dirname, join, relative, resolve } = require('path')
const { sync } = require('glob')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const ManifestPlugin = require('webpack-manifest-plugin')
const extname = require('path-complete-extname')
const { env, paths, publicPath, loadersDir } =
require('./configuration.js')
const extensionGlob = `**/*{${paths.extensions.join(',')}}*`
const packPaths = sync(join(paths.source, paths.entry, extensionGlob))
module.exports = {
entry: packPaths.reduce(
(map, entry) => {
const localMap = map
const namespace = relative(join(paths.source, paths.entry),
dirname(entry))
localMap[join(namespace, basename(entry, extname(entry)))] =
resolve(entry)
return localMap
}, {}
),
output: {
filename: '[name].js',
path: resolve(paths.output, paths.entry),
publicPath
},
module: {
rules: sync(join(loadersDir, '*.js')).map(loader =>
require(loader))
},
plugins: [
new webpack.EnvironmentPlugin(JSON.parse(JSON.stringify(env))),
new ExtractTextPlugin(env.NODE_ENV === 'production' ? '[name]-
[hash].css' : '[name].css'),
new ManifestPlugin({ fileName: paths.manifest, publicPath,
writeToFileEmit: true })
],
resolve: {
extensions: paths.extensions,
modules: [
resolve(paths.source),
resolve(paths.node_modules)
]
},
resolveLoader: {
modules: [paths.node_modules, paths.source],
}
}