soc*_*pet 5 css reactjs webpack webpack-style-loader sass-loader
基本上我试图在容器的背景中显示图像,但它没有加载。我尝试了各种路径,因为我并不完全清楚 URL 需要相对于什么: the package.json、 the webpack.config.js、 React 组件或login.scss我正在使用的。
除了以下内容之外,我还将提供目录结构webpack.config.js:
/app\n /src\n /assets\n /img\n slide_blue.png\n /scss\n login.scss\n /config\n webpack.config.js\n /react\n /containers\n /authentication\n signin.js\n index.js // entry point\n package.json\nRun Code Online (Sandbox Code Playgroud)\n\nlogin.scss到目前为止,它很短,其他样式也有效:
// logic.scss\n@import \'declarations\';\n\n.login {\n height: 381px;\n // tried just about every combination of path... this is just the last one I tried\n background-image: url(\'/src/assets/img/slide_blue.png\') !important;\n\n form {\n padding-top: 75px;\n padding-bottom: -75px;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n最后是webpack.config.js:
var path = require(\'path\');\nvar webpack = require(\'webpack\');\nvar BundleTracker = require(\'webpack-bundle-tracker\');\nvar ExtractTextPlugin = require(\'extract-text-webpack-plugin\');\n\nconst VENDOR_LIBS = [\n \'axios\', \'history\', \'lodash\', \'prop-types\', \'react\', \'react-dom\', \'react-dropzone\', \'react-redux\', \'react-router-dom\', \'react-router-redux\', \'redux\', \'redux-form\', \'redux-thunk\', \'reactstrap\'\n]\n\nmodule.exports = {\n context: __dirname,\n\n entry: {\n app: \'../react/index\',\n vendor: VENDOR_LIBS\n },\n\n output: {\n path: path.resolve(\'./src/assets/bundles/\'),\n filename: \'./js/[name].[chunkhash].js\'\n },\n\n module: {\n rules: [\n { \n loader: \'babel-loader\',\n test: /\\.js$/, \n exclude: /node_modules/, \n query: {\n presets: ["react", "es2015", "stage-1"]\n }\n },\n {\n test: /\\.json$/,\n loader: [\'json-loader\'] \n },\n {\n test: /\\.scss$/,\n loader: [\'style-loader\', \'css-loader\', \'sass-loader\'] \n },\n {\n test: /\\.scss$/,\n use: ExtractTextPlugin.extract({\n fallback: \'style-loader\',\n use: [\'css-loader\', \'sass-loader\']\n }) \n }, \n ],\n },\n plugins: [\n new webpack.optimize.CommonsChunkPlugin({\n names: [\'vendor\', \'manifest\']\n }),\n new BundleTracker({filename: \'./src/config/webpack-stats.json\'}),\n new ExtractTextPlugin({filename: \'./css/[name].[hash].css\', allChunks: true})\n ],\n resolve: {\n extensions: [\'*\', \'.js\', \'.jsx\', \'.json\', \'.gif\', \'.png\'],\n },\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我在这里缺少什么阻止background-image: url(...)显示?
编辑
\n\nReact 组件以防万一:
\n\n return (\n <div className=\'login\'>\n <form onSubmit={handleSubmit(this.onSubmit.bind(this))}>\n {this.renderAlert()}\n <Field \n label=\'Username\'\n name=\'username\'\n type=\'username\'\n component={this.renderField} \n />\n <Field \n label=\'Password\' \n name=\'password\'\n type=\'password\' \n component={this.renderField} \n />\n <div className=\'row\'>\n <div className=\'col-sm-2\'>\n <button type=\'submit\' className=\'btn btn-primary\'>Sign in</button>\n </div>\n <div className=\'col-sm-10 pull-right\'>\n <ul className=\'pull-right signin\'>\n <li><Link to=\'/auth/username\'>Username Recovery</Link></li> \n <li><Link to=\'/auth/password\'>Password Reset</Link></li> \n <br />\n <li><Link to=\'/auth/new_account\'>New Accounts</Link></li>\n </ul>\n </div>\n </div>\n </form>\n </div>\n );\nRun Code Online (Sandbox Code Playgroud)\n\n编辑2
\n\n我添加了以下内容webpack.config.json:
{\n test: /\\.png|jpg$/,\n include: path.join(__dirname, \'assets/img\'),\n loader: [\'file-loader\'] \n },\nRun Code Online (Sandbox Code Playgroud)\n\n并将其更新background-image: url(...)为相对于我的入口点index.js:
background-image: url(\'/../assets/img/slide_blue.png\');\nRun Code Online (Sandbox Code Playgroud)\n\n不会产生错误并且不会加载图像。
\n\n尝试以下操作并产生相应的错误:
\n\nbackground-image: url(\'../assets/img/slide_blue.png\');\nModule not found: Error: Can\'t resolve \'../assets/img/slide_blue.png\' in \'/mnt/c/dev/current/app/src/assets/scss\'\nRun Code Online (Sandbox Code Playgroud)\n\n还尝试了一下,会产生相应的错误:
\n\nbackground-image: url(\'../../assets/img/slide_blue.png\');\nModule parse failed: Unexpected character \'\xef\xbf\xbd\' (1:0)\nYou may need an appropriate loader to handle this file type.\nRun Code Online (Sandbox Code Playgroud)\n\n所以还是不确定发生了什么。我一直在将图像加载到我的组件中,执行以下操作,这让我怀疑它是否正确(但这是另一个问题):
\n\nimport logo from \'!!url-loader!../../../assets/img/logo.png\';\nRun Code Online (Sandbox Code Playgroud)\n
您需要一个file-loader来处理图像文件:
{
test: /\.(png|jpg)$/,
include: path.join(__dirname, 'assets/img'),
loader: 'file-loader'
}
Run Code Online (Sandbox Code Playgroud)
该路径将相对于您的入口点。
| 归档时间: |
|
| 查看次数: |
11398 次 |
| 最近记录: |