javascript 尽管指定了输出名称,为什么汇总不生成全局变量?

fxnxkyjh  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(103)

我尝试使用的singlejs是AWS Chime SDK for JavaScript的一部分。singlejs示例生成amazon-chime-sdk.min.js,您可以通过全局变量ChimeSDK访问SDK。但是在最新版本中,生成的文件不包含此全局变量。下面是我使用的rollup.config.js:

import commonjs from '@rollup/plugin-commonjs';
import resolve, { nodeResolve } from '@rollup/plugin-node-resolve';
import json from '@rollup/plugin-json';
import terser from '@rollup/plugin-terser';

export default {
  input: 'src/index.js',
  output: [
    {
      file: 'build/amazon-chime-sdk.min.js',
      format: 'umd',
      name: 'ChimeSDK',
      sourcemap: true,
    },
  ],
  plugins: [
      [nodeResolve({
        browser: true,
        mainFields: ['module','browser'],
      })],
      json(),
      commonjs()
      //,
      //[terser()]
    ],
  onwarn: (warning, next) => {
    if (warning.code === 'CIRCULAR_DEPENDENCY') {
      // TODO: Fix https://github.com/aws/amazon-chime-sdk-js/issues/107
      return;
    } else if (warning.code === 'EVAL') {
      return;
    } else if (warning.code === 'THIS_IS_UNDEFINED') {
      // https://stackoverflow.com/questions/43556940/rollup-js-and-this-keyword-is-equivalent-to-undefined
      return;
    }
    next(warning);
  },
};

index.js源代码如下:
从“amazon-chime-sdk-js”导出 *;
当rollup --config rollup.config.js运行时,它会成功构建。但是,生成的文件开头如下:

(function (factory) {
    typeof define === 'function' && define.amd ? define(factory) :
    factory();
})((function () { 'use strict';

    var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
//etc

在文件的末尾,它具有:

var hasRequiredBuild;

    function requireBuild () {
        if (hasRequiredBuild) return build$7;
        hasRequiredBuild = 1;
        (function (exports) {
            Object.defineProperty(exports, "__esModule", { value: true });
            exports.DefaultEventController = exports.DefaultDevicePixelRatioMonitor = exports.DefaultDeviceController = exports.DefaultContentShareController = exports.DefaultBrowserBehavior = exports.DefaultAudioVideoFacade = 
//etc

没有ChimeSDK全局变量的迹象,我的代码(与早期版本的amazon-chime-sdk.min.js一起工作,基于SDK的2.x版本,以相同的方式生成,但配置更早、更简单)不再运行,并抱怨没有定义ChimeSDK。
它看起来像是可以修复的东西,如果我有一个更好的了解Rollup和umd(也尝试了iife格式,但类似的结果,没有全局变量)。
已在存储库中尝试了准确的配置,结果相同;我已经在上面的配置中临时更改了版本并禁用了terser。

yacmzcpb

yacmzcpb1#

使用以下代码更新src/index.js文件,然后使用npm run bundle重新生成代码。如果只有一个导出,Rollup建议使用默认导出。
从“amazon-chime-sdk-js”导出 * 作为默认值;

相关问题