Next.js | 导入具有 Fs 依赖项的模块
2021-07-19
1783
我尝试导入 glsl (
import glsl from "babel-plugin-glsl/macro";
),但我遇到的问题是,我收到“找不到模块:无法解析‘fs’”的错误,或者因为我使用
module.exports = {
future: { webpack5: false },
webpack: (config) => {
config.resolve.fallback = { fs: false, module: false };
return config;
},
};
配置了我的 next.config.js 文件,因此出现“找不到模块:无法解析‘路径’”的错误。
我阅读了数十篇文章,了解到 fs 文件只能在服务器端访问,并且使用它的唯一方法是在 getStaticProps 或 getServerSideProps 中,但无论我做什么,我都无法使用它,而且真的不知道或不理解如何设置它,以便我可以在这样的组件中使用它:
import { Canvas, extend } from "@react-three/fiber";
import { shaderMaterial } from "@react-three/drei";
import glsl from "babel-plugin-glsl/macro"; // <--- Module to import
const WaveShaderMaterial = shaderMaterial(
// Uniforms
{},
// Vertexshader
glsl` // <--- Here in Use
`,
// Fragmentshader
glsl` // <--- Here in Use
`
);
extend({ WaveShaderMaterial });
const Plane = () => {
return (
<mesh>
<planeBufferGeometry args={[2, 2, 16, 16]} />
<waveShaderMaterial color="red" />
</mesh>
);
};
const Scene = () => {
return (
<Canvas>
<ambientLight intensity={1.0} />
<Plane />
</Canvas>
);
};
export default Scene;
我的问题是:我如何或者您是否会从“babel-plugin-glsl”(或任何其他)导入 glsl模块)需要 fs 吗?
1个回答
我从 ReadMe 中看到,您可以使用 babel 插件 babel-plugin-macro 。
在项目的根目录中创建以下
.babelrc
文件。
// .babelrc
{
"presets": [
"next/babel"
],
"plugins": [
"babel-plugin-macros"
]
}
无需编辑
next.config.js
。
注意:确保您已在
devDependencies
中安装了
@babel/core
。
Mohcka
2021-11-21