发布
社区首页 >问答首页 >使用CesiumJS捆绑RollupJS

使用CesiumJS捆绑RollupJS
EN

Stack Overflow用户
提问于 2017-11-23 22:18:27
回答 1查看 286关注 0票数 1

我正试图将CesiumJS与汇总捆绑在一起。我想我可以做这样的重要工作:

代码语言:javascript
代码运行次数:0
复制
import Cesium from 'cesium/Build/Cesium/Cesium.js'

使用以下rollup.config.js文件。我得到了一个bundle.js,但是当我运行它时,我会得到很多错误:

未定义的TypeError:无法读取bundle.js:formatted:102314上未定义的属性“文档”

代码语言:javascript
代码运行次数:0
复制
    function() {
        !function(e) {
            var t = this || eval("this")
              , r = t.document  // it is complaining on this line
              , i = t.navigator
              , n = t.jQuery
              , o = t.JSON;

rollup.config.js

代码语言:javascript
代码运行次数:0
复制
import resolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'
import uglify from 'rollup-plugin-uglify'
import { minify } from 'uglify-es'

export default {
    input: 'scripts/Main.js',
    output: {
        file: 'dist/bundle.js',
        format: 'es',
    },
    "options": {
        sourceMap: 'inline',
        output: {
            format: 'es'
        }
    },
    plugins: [
        resolve({
            jsnext: true,
            main: true,
            browser: true,
        }),
        commonjs(),
        uglify({}, minify)
    ]
}
EN

回答 1

Stack Overflow用户

发布于 2017-11-24 03:01:14

ES模块总是处于严格模式--通过扩展,当某些东西导入汇总并转换为ES模块时,它也在严格模式下运行。

在严格模式下,函数中的this值是undefined,除非它是( a)作为方法调用,或者( b)使用callapply显式设置。

这是关于汇总的预期行为,从技术上讲,它并不是铯的一个bug,但我建议向它们提出一个问题,看看它们是否可以使用更现代的方法访问全局变量。在2017年,真的没有理由依赖非严格的行为!

作为最后的手段,您可以将this || eval("this") (或this||(0,eval)("this"),在小型化版本中是这样)替换为window

如果在进行更改后有许多其他错误,则可能不可能将铯包含在您的包中,并且您需要将它作为外部模块保存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47463907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档