当一个文件需要全局窗口对象时,如何绑定/构建javascript文件

当一个文件需要全局窗口对象时,如何绑定/构建javascript文件,javascript,es6-modules,rollupjs,Javascript,Es6 Modules,Rollupjs,我已经用javascript编写了一个前端动画,其逻辑被分割到多个脚本文件中。我想基于ES6模块将这些文件捆绑在一起,至少是我自己编写的文件 问题是: import { Webfont } from "webfontloader"; ... function animate(myText){ WebFont.load({ google: { families: ["Indie Flower"]}, fontactive: function(family

我已经用javascript编写了一个前端动画,其逻辑被分割到多个脚本文件中。我想基于ES6模块将这些文件捆绑在一起,至少是我自己编写的文件

问题是:

import { Webfont } from "webfontloader";

...

function animate(myText){
    WebFont.load({
        google: { families: ["Indie Flower"]},
        fontactive: function(familyName, fvd){ //This is called once font has been rendered in browser
            display(myText);
        },
    });
}
我导入依赖模块,但是有一个模块(webfontloader)包含窗口对象。当它在浏览器中运行时,这很好,但当我将其与npm und rollup.js构建并绑定时,它会抛出错误:

   ReferenceError: window is not defined
我如何在不接触“webfontloader”代码的情况下解决这个问题?webfontloader是一个外部库

我有两个选择吗

  • 选项a)将所有我的文件捆绑在一起,并将外部库保留在外部。在生产中,它们将作为单独的脚本标记包含
  • 选项b)将所有文件捆绑到一个文件中

安装
global
(),然后使用
rollup plugin inject
()告诉rollup用
全局/window
中的一个替换
窗口的用法

// rollup.config.js
import inject from 'rollup-plugin-inject'
export default {
    // ...
    plugins: [
        inject({
            include: 'node_modules/webfontloader/**',
            window: 'global/window'
        })
    ]

安装
global
(),然后使用
rollup plugin inject
()告诉rollup将
window
的用法替换为
global/window
的用法

// rollup.config.js
import inject from 'rollup-plugin-inject'
export default {
    // ...
    plugins: [
        inject({
            include: 'node_modules/webfontloader/**',
            window: 'global/window'
        })
    ]

rollup config globals选项中没有吗?请检查rollup.config.JS这可能会对您有所帮助?嗯,到目前为止,我的尝试还没有成功,rollup config globals选项中没有吗?检查rollup.config.JS也许这会对你有所帮助?嗯,我的尝试到目前为止没有成功