javascript - next.js + Webpack + CSS => SyntaxError : Unexpected token .(点)= 如何修复?

标签 javascript webpack next.js css-loader patternfly

我是 webpack 和 next.js 的新手。我收到以下错误,似乎 webpack 无法正确理解/解析/加载 CSS 文件。

C:\devtmp\workspaces\nextjs\web-admin\node_modules\@patternfly\react-styles\css\components\Backdrop\backdrop.css:4
.pf-c-backdrop {
^
SyntaxError: Unexpected token .

我该如何解决这个问题或进一步调试这个问题?由于我是新人,我完全迷失了。造成这个问题的原因可能是什么?

更多详细信息:

1.) 完整堆栈跟踪:

[ info ]  bundled successfully, waiting for typecheck results ...
[ event ] build page: /test
[ wait ]  compiling ...
[ info ]  bundled successfully, waiting for typecheck results ...
[ ready ] compiled successfully - ready on http://localhost:3000
C:\devtmp\workspaces\nextjs\web-admin\node_modules\@patternfly\react-styles\css\components\Backdrop\backdrop.css:4
.pf-c-backdrop {
^  
SyntaxError: Unexpected token .
    at Module._compile (internal/modules/cjs/loader.js:720:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Module.require (internal/modules/cjs/loader.js:683:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (C:\devtmp\workspaces\nextjs\web-admin\node_modules\@patternfly\react-styles\css\components\Backdrop\backdrop.js:3:1)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Module.require (internal/modules/cjs/loader.js:683:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (C:\devtmp\workspaces\nextjs\web-admin\node_modules\@patternfly\react-core\dist\js\components\AboutModal\AboutModal.js:16:40)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)

2.) 执行 CSS 导入的文件

文件:///C:/devtmp/workspaces/nextjs/web-admin/node_modules/@patternfly/react-styles/css/components/Backdrop/backdrop.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("./backdrop.css");
exports.default = {
    backdrop: 'pf-c-backdrop',
    backdropOpen: 'pf-c-backdrop__open',
    modifiers: {}
};

3.) CSS

文件:///C:/devtmp/workspaces/nextjs/web-admin/node_modules/@patternfly/react-styles/css/components/Backdrop/backdrop.css

/* stylelint-enable */
/* stylelint-disable */
/* stylelint-enable */
.pf-c-backdrop {
  --pf-c-backdrop--ZIndex: var(--pf-global--ZIndex--lg);
  --pf-c-backdrop--Color: var(--pf-global--BackgroundColor--dark-transparent-100);
  --pf-c-backdrop--BackdropFilter: blur(10px);
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--pf-c-backdrop--ZIndex);
  width: 100%;
  height: 100%;
  background-color: var(--pf-c-backdrop--Color);
  /* stylelint-disable-next-line */
  -webkit-backdrop-filter: var(--pf-c-backdrop--BackdropFilter);
  backdrop-filter: var(--pf-c-backdrop--BackdropFilter); }

.pf-c-backdrop__open {
  overflow: hidden; }

4.) next.config.js 摘录

module.exports = {

  webpack: (config, options) => {


    config.module.rules.push({
       test: /\.css$/,
        //exclude: ['/node_modules/'],

        include: [
          path.resolve(__dirname, 'pages'),
          path.resolve(__dirname, 'node_modules/patternfly'),
          path.resolve(__dirname, 'node_modules/@patternfly/patternfly'),
          path.resolve(__dirname, 'node_modules/@patternfly/react-styles/css'),
          path.resolve(__dirname, 'node_modules/@patternfly/react-core/dist/styles/base.css'),
          path.resolve(__dirname, 'node_modules/@patternfly/react-core/dist/esm/@patternfly/patternfly'),
          path.resolve(__dirname, 'node_modules/@patternfly/react-core/node_modules/@patternfly/react-styles/css'),
          path.resolve(__dirname, 'node_modules/@patternfly/react-table/node_modules/@patternfly/react-styles/css'),
          path.resolve(__dirname, 'node_modules/@patternfly/react-inline-edit-extension/node_modules/@patternfly/react-styles/css')
        ],

        use: ["style-loader", "css-loader"]
    });
...

非常感谢!

最佳答案

事实上,接下来为 ssr客户端 提供了一个解决方案,它有 2 个 webpack 配置,每个配置一个。

与其自己配置,不如使用官方(目前)插件 @zeit/next-css .

// next.config.js
const withCSS = require('@zeit/next-css')
module.exports = withCSS()

<强> WARN Edit: 06-07-2021

This package has been deprecated
Author message:

Next.js now has built-in support for CSS: https://nextjs.org/docs/basic-features/built-in-css-support. The built-in support solves many bugs and painpoints that the next-css plugin had.

关于javascript - next.js + Webpack + CSS => SyntaxError : Unexpected token .(点)= 如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58549391/

相关文章:

javascript - yarn 工作区和 lerna 导致无效的 Hook 调用

reactjs - 为什么我收到 ReferenceError : self is not defined when I import a client-side library?

javascript - 如何在 Next.js 中获取 _app.js 的状态?

asp.net - 使用 html-webpack-plugin 将捆绑脚本标签注入(inject)带有母版页的 <asp :Content> tag in legacy . aspx 文件中?

javascript - 拖动一个 Famous 表面并让它在 mouseup 上过渡回原点?

php - 让 jquery ajax (php) 脚本一个接一个地运行,而不是同时运行

javascript - 如何在没有 jQuery 的情况下将直接标记附加到 HEAD?

javascript - 找不到模块 : Error: Cannot resolve module

reactjs - Next.js( react )+ Phaser : ReferenceError: navigator is not defined

javascript - 使用过滤器获取回文