使用 Jenkins 构建 React 应用程序时出现问题,一些文件由于文件加载器而丢失
Issue with building React app using Jenkins, some files missing because of file-loader
我正在使用 Jenkins 构建一个 React 应用程序,并且构建成功。但是,某些组件无法加载并且出现错误:
Uncaught Error: Cannot find module './sun.png'
本地,一切正常。
应用程序结构(服务器):
/public/images/<images_are_here>
图标组件:
import React from 'react';
const Icon = ({icon, size}) => {
const iconStyle = {
"height" : size + 'px',
"width" : size + 'px',
"pointerEvents": "none"
};
return (
<img src={require('../../../public/images/' + icon)} style={iconStyle} alt=""/>
);
};
export default Icon;
Webpack.config.js:
module.exports = {
entry: ['babel-polyfill', __dirname + '/src/index.js'],
output: {
path: __dirname + '/public/js',
filename: 'bundle.js',
publicPath: "/public/images/"
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: '/node_modules/',
loader: 'babel-loader',
query: {
presets: [
'es2015',
'stage-0',
'react'
]
}
},
{
test: /\.scss$/,
use: ["style-loader", "css-loader", "sass-loader"]
},
{
test: /\.(jpg|png|svg)$/,
use: ['file-loader?name=[name].[ext]']
}
]
}
};
过去使用 Rails,我记得使用的资产是预编译的,生成哈希,客户端知道如何插入。
react + webpack 是什么情况?
好吧,用 url-loader 替换 file-loader 解决了问题。当我找到真正的原因时,我会深入研究并更新,因为这是一种奇怪的行为 (IMO)。
我正在使用 Jenkins 构建一个 React 应用程序,并且构建成功。但是,某些组件无法加载并且出现错误:
Uncaught Error: Cannot find module './sun.png'
本地,一切正常。
应用程序结构(服务器):
/public/images/<images_are_here>
图标组件:
import React from 'react';
const Icon = ({icon, size}) => {
const iconStyle = {
"height" : size + 'px',
"width" : size + 'px',
"pointerEvents": "none"
};
return (
<img src={require('../../../public/images/' + icon)} style={iconStyle} alt=""/>
);
};
export default Icon;
Webpack.config.js:
module.exports = {
entry: ['babel-polyfill', __dirname + '/src/index.js'],
output: {
path: __dirname + '/public/js',
filename: 'bundle.js',
publicPath: "/public/images/"
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: '/node_modules/',
loader: 'babel-loader',
query: {
presets: [
'es2015',
'stage-0',
'react'
]
}
},
{
test: /\.scss$/,
use: ["style-loader", "css-loader", "sass-loader"]
},
{
test: /\.(jpg|png|svg)$/,
use: ['file-loader?name=[name].[ext]']
}
]
}
};
过去使用 Rails,我记得使用的资产是预编译的,生成哈希,客户端知道如何插入。 react + webpack 是什么情况?
好吧,用 url-loader 替换 file-loader 解决了问题。当我找到真正的原因时,我会深入研究并更新,因为这是一种奇怪的行为 (IMO)。