首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应生产建设,资产不加载

反应生产建设,资产不加载
EN

Stack Overflow用户
提问于 2018-09-18 10:11:17
回答 2查看 3.8K关注 0票数 0

我遇到了恼人的问题,当我在开发环境中运行我的react应用程序时,一切正常,但是当我试图构建到生产中时,所有的链接都是错误的。

假设这棵树:

  • main_directory
代码语言:javascript
复制
- public/  
    - svg/  
        - some\_img.svg

代码语言:javascript
复制
- src/  
    - components/  
        - some\_component.jsx

代码语言:javascript
复制
    - App.js
    - index.js

现在,在some_component.jsx中,我以这样的方式引用svg文件:

代码语言:javascript
复制
src="/public/svg/some_img.svg"

但是,在构建到生产之后,这个路径是未被触及的,因此不能再访问文件了,因为在那里我需要将它更改为:

代码语言:javascript
复制
src="svg/some_img.svg"

我在webpack配置文件中玩,我想可能是通过设置:

代码语言:javascript
复制
publicPath: "/"

至:

代码语言:javascript
复制
publicPath: "/public/"

可以解决这个问题,但是它所做的唯一的事情就是在应用程序启动时出错:

代码语言:javascript
复制
CANNOT GET/

我的webpack配置:

代码语言:javascript
复制
const HtmlWebPackPlugin = require("html-webpack-plugin");

const htmlPlugin = new HtmlWebPackPlugin({
  template: "./public/index.html",
  filename: "./index.html"
});

module.exports = {
  output: {
    filename: "main.[hash:8].js",
    publicPath: "/"
  },
  module: {
    rules: [
      {
        test: /\.jsx$/,
        exclude: /node_modules/,
        loader: "babel-loader?presets[]=react"
      },
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader"
        }
      },
      {
        test: /\.(sass|scss)$/,
        use: ["style-loader", "css-loader", "sass-loader", "postcss-loader"]
      },
      {
        test: /\.svg$/,
        loader: "svg-sprite-loader"
      }
    ]
  },
  plugins: [htmlPlugin],
  devServer: {
    historyApiFallback: {
      rewrites: [{ from: /^\/$/, to: "/index.html" }]
    }
  },
  resolve: {
    extensions: [".js", ".jsx", ".json"]
  }
};

如何解决这个问题,对于开发和生产路径都是统一的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-19 12:48:25

这是指定路径所需的问题配置的解决方案:

代码语言:javascript
复制
module: {
    ...
    rules: [
        {
            test: /\.(png|jpg|gif|svg|ico)$/,
            loader: 'file-loader',
            query:{
                outputPath: './img/',
                name: '[name].[ext]?[hash]'
            }
        }
        ...
    ]
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-18 10:50:45

如何导入svg,然后引用导入的变量:

代码语言:javascript
复制
import someImg from "../../public/svg/some_img.svg"

src={someImg}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52384188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档