铯与网页包和Typescript:ReferenceError:铯未定义

铯与网页包和Typescript:ReferenceError:铯未定义,typescript,webpack,cesium,Typescript,Webpack,Cesium,我已使用Official cesium with webpack模板设置了一个项目,可在此处找到: 然后我尝试向该项目添加typescript支持。它编译得很好,但在浏览器中出现以下错误: ReferenceError:铯未定义索引。ts:12:4 以下是我的index.ts脚本: /// <reference path="custom_typings/cesium/index.d.ts" /> require('cesium/Widgets/widgets.css'); requi

我已使用Official cesium with webpack模板设置了一个项目,可在此处找到: 然后我尝试向该项目添加typescript支持。它编译得很好,但在浏览器中出现以下错误:

ReferenceError:铯未定义索引。ts:12:4

以下是我的index.ts脚本:

/// <reference path="custom_typings/cesium/index.d.ts" />
require('cesium/Widgets/widgets.css');
require('./css/main.css');
require('cesium/Cesium');

// Example app
let viewerOptions : Cesium.ViewerOptions = {
    scene3DOnly: true,
    selectionIndicator: false,
    baseLayerPicker: false
}
let viewer = new Cesium.Viewer('cesiumContainer', viewerOptions);

Cesium和typescript都作为节点模块安装。

我通过以下方式将Cesium作为全局变量来解决问题:

const cs = require("cesium/Cesium");
(<any>window).Cesium = cs
const cs=require(“铯/铯”);
(窗口)。铯=铯

您的铯基URL必须是应用程序的基URL

   new DefinePlugin({
        // whatever the base is www.example.com, http://localhost or whatever
        CESIUM_BASE_URL: JSON.stringify('http://localhost/'),
      }),

我不是一个喜欢使用网页包的人,但是,试着将第三个require替换为:
const-Cesium=require('Cesium/Cesium')
不起作用,因为类型定义已经导出了一个名为Cesium的命名空间<代码>声明模块铯{如果没有编译器所说的类型定义:
无法重新声明块作用域变量“铯”。
   new DefinePlugin({
        // whatever the base is www.example.com, http://localhost or whatever
        CESIUM_BASE_URL: JSON.stringify('http://localhost/'),
      }),