【发布时间】:2021-09-12 16:44:49
【问题描述】:
我正在尝试使用 npm 'react-3d-viewer' 在 nextjs 中加载一个 gltf 文件。gltf 文件来自数据库。
import {GLTFModel,AmbientLight,DirectionLight} from 'react-3d-viewer'
import React, { Suspense } from "react";
import getConfig from "next/config";
import axios from "axios";
const config = getConfig();
class ModalDemo extends React.Component {
constructor(props) {
super(props);
this.state = {
apiUrl: config.publicRuntimeConfig.publicRuntimeConfigValue.apiUrl,
filePath: '',
};
}
render() {
return (
<div className="App">
<div>
<p>okay</p>
<GLTFModel
src={this.state.apiUrl + '/api/v1/visitImageRequirementInfo/getImageByImagePathId?imagePath=' + this.state.filePath}>
<AmbientLight color={0xffffff}/>
<DirectionLight color={0xffffff} position={{x:100,y:200,z:100}}/>
<DirectionLight color={0xff00ff} position={{x:-100,y:200,z:-100}}/>
</GLTFModel>
</div>
</div>
);
}
}
export default ModalDemo;
filePath 属性包含 gltf 的值,其值是这样的
访问ImageDirectory/4f2f0f63-e57b-4eb8-b3d5-c4a2413cd2bd.gltf
它来自数据库的 componetDidMount 函数中的 get 请求。我得到这个错误:
ReferenceError: window is not defined
这是我的 next.config.js 文件,如果它与它有任何关系的话
const withCSS = require('@zeit/next-css');
const withImages = require('next-images');
const withPlugins = require('next-compose-plugins');
module.exports = withPlugins([
[withCSS, { cssModules: true }],
[withImages],
], {
serverRuntimeConfig: { serverRuntimeConfigValue: 'test server' },
// publicRuntimeConfig: { publicRuntimeConfigValue: {apiUrl:'http://127.0.0.1:5000'} },
publicRuntimeConfig: { publicRuntimeConfigValue: {apiUrl:process.env.apiUrl.trim()} },
webpack: (config, options) => { return config; } ,exportTrailingSlash: true
});
我该如何解决这个问题。或者我可以用来显示gltf文件的任何其他库是数据库中的nextjs?
【问题讨论】: