为什么汇总会抛出“必须使用导入来加载ES模块”?

问题描述 投票:0回答:1

我有以下适用于汇总的代码...

// rollup.config.js
import pkg from './package.json';

export default [{
  input: pkg.src,
  external: ['ms'],
  output: [
    {
        file: pkg.main,
        format: 'esm'
    }
  ]
}];

我创建了一个项目来制作简单的UMD,CJS和ESM,所以现在我想制作代码...

import { getMJS } from "@jrg/build"

import pkg from './package.json';

export default [
  getMJS(pkg)
];

但是当我尝试运行它时,我得到...

[!] Error: Must use import to load ES Module: /.../web-components/packages/base/node_modules/@jrg/build/dist/index.mjs
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /.../web-components/packages/base/node_modules/@jrg/build/dist/index.mjs
    at Module.load (internal/modules/cjs/loader.js:1048:11)

我想念的是什么? @ jrg / build中的index.mjs文件是...

// node_modules/@jrg/index.mjs
import { string } from 'rollup-plugin-string';

const myString = string({
  include: "**/*.(html|css|svg)"
})

const getMJS = function(pkg, plugins){
  plugins = plugins || [ ];
  plugins.push(myString);
  return {
    input: pkg.src,
    plugins: plugins,
    external: ['ms'],
    output: [
      {
        file: pkg.main,
        format: 'esm'
      }
    ]
  }
};
export { getMJS };

UPDATE

因此,如果我使用这样的CJS版本,它确实可以工作...

import * as build from "@jrg/build/dist/index.cjs"

export default [build.getMJS(pkg)];

但是如果我尝试更改为rollup.config.mjs并运行rollup -c rollup.config.mjs,则会得到...

[!] TypeError: defaultLoader is not a function
rollupjs
1个回答
0
投票

使用相对路径对我来说很有效...

import {getMJS, getUMD} from "../../node_modules/@jrg-material/build/dist/index.mjs"
© www.soinside.com 2019 - 2024. All rights reserved.