【发布时间】:2018-01-03 01:20:51
【问题描述】:
我使用 Next.js 为我的应用程序使用自定义 webpack:
const path = require('path');
const Webpack = require('webpack');
module.exports = {
webpack: (config, { dev }) => {
config.plugins.push(
new Webpack.DefinePlugin([{
__BROWSER__: "typeof window !== 'undefined'",
__NETLIFY_BRANCH__: JSON.stringify(process.env.BRANCH),
__CONFIG__: JSON.stringify({
GRAPHQL_URL: process.env.GRAPHQL_URL,
SEGMENT_WRITEKEY: process.env.SEGMENT_WRITEKEY,
}),
}])
)
config.module.rules.push(
{
test: /\.png$/,
use: {
loader: 'url-loader',
options: {
limit: 10000,
name: 'graphics/[name].[ext]',
},
},
},
{
test: /\.svg$/,
loader: [
{
loader: 'babel-loader',
query: {
presets: ['es2015']
}
},
{
loader: 'svg-react-loader',
},
{
loader: 'string-replace-loader',
options: {
search: ' xmlns="http://www.w3.org/2000/svg"',
replace: '',
},
},
],
},
);
return config;
},
};
但是当我尝试将图像添加到我的组件时,我的 localhost 启动了,但我收到了错误:
Cannot find module '../assets/logo.svg'
我像往常一样将我的图像导入组件,没有图像,我的应用程序正在运行。也许我应该在我的 webpack 中添加一些东西? dir assets 中设置的所有图像。
import logo from '../assets/logo.svg';
export default class Layout extends React.Component {
render () {
return (
<img src={logo} alt="logo" />
)
}
}
【问题讨论】:
-
您确定 SVG 文件的路径正确(相对于您的组件文件)? (fwiw,您的组件文件有错字,
defailt而不是default) -
抱歉,打错字了。是的,路径是正确的。
-
查看我的更新答案。
-
@robertklep 你需要我的项目结构吗?
-
不,不需要结构,与那个无关:)
标签: javascript reactjs module webpack loader