【问题标题】:Babel import css syntax errorBabel 导入 css 语法错误
【发布时间】:2017-09-15 09:05:14
【问题描述】:

我希望能够在我的 react 应用程序中使用 import 不仅用于 js/jsx 文件,还可以用于 css 文件。根据我的阅读,最好的方法是使用extract-text-webpack-plugin,它将把你导入的css文件打包在一起。

我已经对其进行了设置,以便它生成我捆绑的 css 文件,但由于某种原因,每次我加载我的页面时都会出现语法错误:

SyntaxError: MyWebpage/views/global.css: Unexpected token, expected ; (1:5)
> 1 | body {
    |      ^
  2 |     margin: 0;
  3 | }

我的设置如下所示:

webpack.config.js

const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');


const config = {
  entry: ['babel-polyfill', './views/Index.jsx'],
  output: {
    path: path.resolve(__dirname, 'public'),
    filename: 'bundle.js',
    publicPath: '/public'
  },
  module: {
    rules: [
      { test: /\.(jsx|js)$/, exclude: /node_modules/ , use: 'babel-loader' },
      { 
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: "css-loader"
        })
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin("styles.css"),
  ]
};

module.exports = config;

入口点 ./views/Index.js 是我要导入我的 css 文件的地方:

Index.js

import React from 'react';
import Layout from './Layout.jsx';
import PageContent from './PageContent.jsx';
import './global.css';

class Index extends React.Component {
  render() {
    return (
        <Layout title={this.props.title}>
            <PageContent />
        </Layout>
    );
  }
}

export default Index;

在导入的./Layout.jsx 文件中,我使用&lt;link&gt; 将捆绑的css 文件包含在我的页面中:

Layout.jsx

import React from 'react';

class Layout extends React.Component {
    render() {
        return (
            <html>
            <head>
                <title>{this.props.title}</title>
                <link rel="stylesheet" href="styles.css" />
            </head>
            <body> 
                <div id="root">
                    {this.props.children}
                </div>
                <script type="text/javascript" src="./bundle.js"></script>
            </body>
            </html>
        );
    }
}

export default Layout;

我很困惑,因为看起来我的应用程序构建良好,但是当我尝试访问我的网页时,我不断收到语法错误。

谁能帮我理解我做错了什么?

【问题讨论】:

    标签: node.js reactjs webpack babeljs extracttextwebpackplugin


    【解决方案1】:

    下面的加载器似乎有问题是 webpack.config.js 文件适用于 jsx 和 css 加载器的示例:

    module.exports = {
        entry: './app/index.js',
        output: {
            path: __dirname,
            filename: 'dist/bundle.js'
        },
        devServer: {
            inline: true,
            port: 3000
        },
        module: {
            loaders: [{
                test: /.jsx?$/,
                loader: 'babel-loader',
                exclude: /node_modules/,
                query: {
                    presets: ['es2015', 'react', 'react-hmre']
                }
            },
            {
                    test: /\.scss$/,
                    loaders: [ 'style', 'css', 'sass' ]
                }]
        }
    }; 
    

    【讨论】:

      【解决方案2】:

      似乎 babel 或 webpack 没有加载加载器。

      这个变体对我有帮助(只需包含在 webpack.config.js 中):

          require.extensions['.css'] = () => {
            return;
          };
      

      更多... [link]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-22
        • 1970-01-01
        • 2016-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-26
        • 1970-01-01
        相关资源
        最近更新 更多