我终于设法使它工作。
首先,我们需要使用默认设置定义一个环境变量以消除错误。我们可以通过插入 webpack 来做到这一点.storybook/main.js
:
// .storybook/main.js
var webpack = require('webpack');
module.exports = {
...
webpackFinal: (config) => {
config.plugins.push(new webpack.DefinePlugin({
'process.env.__NEXT_IMAGE_OPTS': JSON.stringify({
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
domains: [],
path: '/',
loader: 'default',
}),
}));
return config;
},
};
现在我们可以使用返回简单标签next/image
的功能组件覆盖默认导出包。<img/>
// .storybook/preview.js
import * as nextImage from 'next/image';
Object.defineProperty(nextImage, 'default', {
configurable: true,
value: (props) => {
return <img {...props} />;
},
});
我defineProperty
为此使用了静态方法(链接到 MDN 文章),因为我不能只为Image.default
.