【问题标题】:Rollup CommonJS plugin throwing error when importing Sass files in dependencies在依赖项中导入 Sass 文件时汇总 CommonJS 插件抛出错误
【发布时间】:2020-11-05 13:55:34
【问题描述】:

我在此处找到的 Sapper 项目上使用汇总:https://github.com/darryl-snow/perfect-cookie

昨天我跑了npm update,从那以后我跑了npm run dev,我得到了以下错误:

✗ client
Invalid CSS after "...-features: list": expected expression (e.g. 1px, bold), was ".append($available-"
✗ server
Invalid CSS after "...-features: list": expected expression (e.g. 1px, bold), was ".append($available-"
internal/modules/cjs/loader.js:985
  throw err;
  ^

我的汇总配置:

import resolve from '@rollup/plugin-node-resolve'
import replace from '@rollup/plugin-replace'
import commonjs from '@rollup/plugin-commonjs'
import svelte from 'rollup-plugin-svelte'
import postcss from 'rollup-plugin-postcss'
import babel from 'rollup-plugin-babel'
import { terser } from 'rollup-plugin-terser'
import config from 'sapper/config/rollup.js'
import pkg from './package.json'

const mode = process.env.NODE_ENV
const dev = mode === 'development'
const legacy = !!process.env.SAPPER_LEGACY_BUILD

const onwarn = (warning, onwarn) =>
  (warning.code === 'CIRCULAR_DEPENDENCY' && /[/\\]@sapper[/\\]/.test(warning.message)) || onwarn(warning)
const postcssOptions = () => ({
  extensions: ['.scss', '.sass'],
  extract: false,
  minimize: true,
  use: [
    [
      'sass',
      {
        includePaths: ['./src/theme', './node_modules'],
      },
    ],
  ],
})

export default {
  client: {
    input: config.client.input(),
    output: config.client.output(),
    plugins: [
      replace({
        'process.browser': true,
        'process.env.NODE_ENV': JSON.stringify(mode),
      }),
      svelte({
        dev,
        hydratable: true,
        emitCss: true,
      }),
      resolve({
        browser: true,
        dedupe: ['svelte'],
      }),
      commonjs(),

      postcss(postcssOptions()),

      legacy &&
        babel({
          extensions: ['.js', '.mjs', '.html', '.svelte'],
          runtimeHelpers: true,
          exclude: ['node_modules/@babel/**'],
          presets: [
            [
              '@babel/preset-env',
              {
                targets: '> 0.25%, not dead',
              },
            ],
          ],
          plugins: [
            '@babel/plugin-syntax-dynamic-import',
            [
              '@babel/plugin-transform-runtime',
              {
                useESModules: true,
              },
            ],
          ],
        }),

      !dev &&
        terser({
          module: true,
        }),
    ],

    onwarn,
  },

  server: {
    input: config.server.input(),
    output: config.server.output(),
    plugins: [
      replace({
        'process.browser': false,
        'process.env.NODE_ENV': JSON.stringify(mode),
      }),
      svelte({
        generate: 'ssr',
        dev,
      }),
      resolve({
        dedupe: ['svelte'],
      }),
      commonjs(),

      postcss(postcssOptions()),
    ],
    external: Object.keys(pkg.dependencies).concat(
      require('module').builtinModules || Object.keys(process.binding('natives'))
    ),

    onwarn,
  },

  serviceworker: {
    input: config.serviceworker.input(),
    output: config.serviceworker.output(),
    plugins: [
      resolve(),
      replace({
        'process.browser': true,
        'process.env.NODE_ENV': JSON.stringify(mode),
      }),
      commonjs(),
      !dev && terser(),
    ],

    onwarn,
  },
}

我尝试了rm -rf ./node_modules && npm install,但仍然遇到同样的错误。看起来 commonJS 正在加载依赖项并找到一个它期望 CSS 但得到 Sass 的地方......我对汇总完全陌生,有什么想法吗?

【问题讨论】:

    标签: sass commonjs svelte rollup sapper


    【解决方案1】:

    您可能应该考虑安装@rollup/plugin-commonjs 的最新主要版本。您当前使用的那个有一个 Sapper 错误(我在运行您的 repo 时遇到了这个错误,而不是问题中的那个),并且在以后的版本中得到了修复。

    升级后,您的项目似乎可以正常启动。

    当你这样做的时候,升级其他主要版本的升级,很可能它们中的大多数都不会出错。

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 2022-01-18
      • 2018-03-16
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多