没有为 rollup 和 svelte 定义导出

Sum*_*mar 5 javascript rollup node.js svelte

我正在尝试使用一个包:quoters

这是app.svelte 文件。相同的代码适用于 React 和 JS 中的其他地方。

<script>
  import Quote from "quoters";  
  let quote = "";
  let category = "QUOTE";
  function handleCategory() {
    quote = new Quote(category).get();
  }
</script>
Run Code Online (Sandbox Code Playgroud)

当我尝试运行代码时。我收到以下错误:“未捕获的引用错误:未定义导出”。我检查了它所引用的行。它包含 quoters 包内导出的定义。

Object.defineProperty(exports, "__esModule", { value: true });
Run Code Online (Sandbox Code Playgroud)

我已经尝试过诸如 babel 和 commonjs 之类的一切。也许我错过了一些东西。请任何人告诉我问题是什么并解决此问题。

我的汇总配置文件供参考:

import svelte from "rollup-plugin-svelte";
import commonjs from "@rollup/plugin-commonjs";
import resolve from "@rollup/plugin-node-resolve";
import livereload from "rollup-plugin-livereload";
import { terser } from "rollup-plugin-terser";
import css from "rollup-plugin-css-only";
import copy from "rollup-plugin-copy";
import json from "@rollup/plugin-json";
import builtins from "rollup-plugin-node-builtins";
import globals from "rollup-plugin-node-globals";
import replace from "@rollup/plugin-replace";
import babel from "@rollup/plugin-babel";

import nodePolyfills from "rollup-plugin-node-polyfills";

const production = !process.env.ROLLUP_WATCH;

function serve() {
  let server;

  function toExit() {
    if (server) server.kill(0);
  }

  return {
    writeBundle() {
      if (server) return;
      server = require("child_process").spawn(
        "npm",
        ["run", "start", "--", "--dev"],
        {
          stdio: ["ignore", "inherit", "inherit"],
          shell: true,
        }
      );

      process.on("SIGTERM", toExit);
      process.on("exit", toExit);
    },
  };
}

export default {
  input: "src/main.js",
  output: {
    sourcemap: true,
    format: "iife",
    name: "app",
    file: "public/build/bundle.js",

    exports: "auto",
  },
  moduleContext: {
    "node_modules/quoters/dist/parseData.js": "window",
  },
  plugins: [
    svelte({
      compilerOptions: {
        // enable run-time checks when not in production
        dev: !production,
      },
    }),

    nodePolyfills(),
    json(),
    copy({
      targets: [
        {
          src: "node_modules/bootstrap/dist/**/*",
          dest: "public/vendor/bootstrap",
        },
      ],
    }),

    // we'll extract any component CSS out into
    // a separate file - better for performance
    css({ output: "bundle.css" }),
    // If you have external dependencies installed from
    // npm, you'll most likely need these plugins. In
    // some cases you'll need additional configuration -
    // consult the documentation for details:
    // https://github.com/rollup/plugins/tree/master/packages/commonjs

    babel({
      exclude: "node_modules/**", // only transpile our source code
    }),
    resolve({
      dedupe: ["svelte"],
      browser: true,
      preferBuiltins: false,
    }),
    commonjs(),

    // In dev mode, call `npm run start` once
    // the bundle has been generated
    !production && serve(),

    // Watch the `public` directory and refresh the
    // browser on changes when not in production
    !production && livereload("public"),

    // If we're building for production (npm run build
    // instead of npm run dev), minify
    production && terser(),
  ],
  watch: {
    clearScreen: false,
  },
};
Run Code Online (Sandbox Code Playgroud)