无法读取未定义的属性(读取“作用域”)

Tus*_*usi 6 rollup vuejs3 vite

我正在构建一个基于汇总的 UI 库。发生错误,我不知道如何解决。

TypeError: Cannot read properties of undefined (reading 'scoped')
    at transformStyle (C:\my-kit\node_modules\@vitejs\plugin-vue\dist\index.js:4597:19)
    at Object.transform (C:\my-kit\node_modules\@vitejs\plugin-vue\dist\index.js:4747:18)
    at C:\my-kit\node_modules\rollup\dist\shared\rollup.js:22870:37 {
  code: 'PLUGIN_ERROR',
  plugin: 'commonjs--resolver',
  hook: 'resolveId',
  id: 'C:\\my-kit\\packages\\my-ui\\icon\\select-icon-svg.vue?vue&type=style&index=0&scoped=true&lang.less',
Run Code Online (Sandbox Code Playgroud)

看起来解析 vue 有问题。

const 块=描述符.styles[索引];

的值block未定义,访问scoped的属性时发生错误block

这是我的汇总配置。希望有人可以帮助我。

import { rollup } from "rollup";
import { nodeResolve } from "@rollup/plugin-node-resolve";
import fastGlob from "fast-glob";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import css from "rollup-plugin-css-only";
import commonjs from "@rollup/plugin-commonjs";
import esbuild from "rollup-plugin-esbuild";
import postcss from "rollup-plugin-postcss";
import postcssImport from "postcss-import";
import { babel, getBabelOutputPlugin } from "@rollup/plugin-babel";
import defineOptions from "unplugin-vue-define-options/rollup";
import { UI_PATH } from "./path";
import { resolve } from "path";
import pkgJson from "../packages/my-ui/package.json";

export const buildEsm = async () => {
  const input = await fastGlob("**/*.{js,ts,jsx,tsx,vue}", {
    cwd: UI_PATH,
    absolute: true,
    onlyFiles: true,
    ignore: ["node_modules"],
  });

  try {
    const bundle = await rollup({
      input,
      plugins: [
        css(),
        postcss({
          extensions: [".css", ".less", ".scss"],
          modules: true,
          extract: true,
          use: {
            sass: null,
            stylus: null,
            less: { javascriptEnabled: true },
          },
          plugins: [postcssImport()],
        }),
        defineOptions(),
        vue({
          isProduction: false,
        }),
        vueJsx(),
        nodeResolve({
          extensions: [".js", ".json", ".ts", ".jsx", ".tsx", ".vue"],
        }),
        commonjs(),
        esbuild({
          sourceMap: true,
          target: "es2018",
          loaders: {
            ".vue": "ts",
          },
        }),
        getBabelOutputPlugin({
          configFile: resolve(__dirname, "../babel.config.js"),
        }),
        babel({
          exclude: "node_modules/**",
          extensions: [".js", ".jsx", ".ts", ".tsx", ".vue"],
          babelHelpers: "bundled",
        }),
      ],
      external: Object.keys(pkgJson.peerDependencies),
    });

    // write the bundle to disk
    await bundle.write({
      format: "esm",
      dir: resolve(UI_PATH, "es"),
    });
  } catch (err) {
    console.error(err);
  }
};

Run Code Online (Sandbox Code Playgroud)