我尝试使用的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。
1条答案
按热度按时间yacmzcpb1#
使用以下代码更新
src/index.js
文件,然后使用npm run bundle
重新生成代码。如果只有一个导出,Rollup建议使用默认导出。从“amazon-chime-sdk-js”导出 * 作为默认值;