相关疑难解决方法(0)

如何在TypeScript中的`window`上显式设置新属性?

我通过显式设置属性来为我的对象设置全局命名空间window.

window.MyNamespace = window.MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)

TypeScript强调MyNamespace并抱怨:

属性'MyNamespace'在'window'类型的值上不存在任何"

我可以通过声明MyNamespace为环境变量并删除window显式来使代码工作,但我不想这样做.

declare var MyNamespace: any;

MyNamespace = MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)

我怎样才能window留在那里让TypeScript开心?

作为旁注,我发现TypeScript抱怨特别有趣,因为它告诉我这种window类型any绝对可以包含任何东西.

typescript

502
推荐指数
25
解决办法
27万
查看次数

Webpack捆绑包中的导出功能

我正在使用需要回调的Google Maps API。如何从Webpack捆绑包导出回调,以供外部脚本(例如Google Maps API)使用?

HTML(Xd输出键):

<div id="hello"></div>
<script src="/js/map.bundle.js"></script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXX&callback=initMap"></script>
Run Code Online (Sandbox Code Playgroud)

map.js:

var $ = require("jquery");
function initMap() {
    $("#hello").text("hello world");
}
Run Code Online (Sandbox Code Playgroud)

我将上述map.js文件构建到名为的webpack捆绑包中map.bundle.js

浏览器控制台错误:

Yc消息:“ initMap不是函数”名称:“ InvalidValueError”堆栈:“在新Yc出现错误?(https://maps.googleapis.com/ma ...

我也尝试添加

module.exports = { initMap: initMap }
Run Code Online (Sandbox Code Playgroud)

到,map.js但这没有帮助。

编辑:同样的问题,但在表单事件中使用webpack捆绑中的javascript函数:

HTML:

<form onsubmit="sayHello(event)">
    <button type="submit">Say Hello</button>
</form>
Run Code Online (Sandbox Code Playgroud)

JS:

function sayHello(e) {
    e.preventDefault();
    console.log("hello");
    return false;
}
Run Code Online (Sandbox Code Playgroud)

当JS打包成一个包时,“ hello”不再打印在控制台上

javascript google-api webpack

3
推荐指数
1
解决办法
4070
查看次数

JS 控制台中的“initMap 不是函数”错误(Google Maps API)

我很感激现在已经多次询问它,但是我找不到解决它的方法并将带有 initMap 函数的脚本作为单独的文件加载。

让我解释:

我正在调用 Google Maps API:

<script src="https://maps.googleapis.com/maps/api/js?key=MYAPIKEY&callback=initMap" async
  defer></script>
Run Code Online (Sandbox Code Playgroud)

其次是我捆绑的包含 initMap 函数的主 JS 文件。

<script src="/js/main.js"></script>
Run Code Online (Sandbox Code Playgroud)

我有标题中的错误。

我试图做的事情:

  • 首先加载 main.js - 同样的错误。
  • 在 head 部分移动两个脚本 - 相同的错误。
  • 第二次加载 main.js - 同样的错误。
  • 拆分页面顶部(头部)和底部(正文结束之前)(每种方式)之间调用的两个脚本 - 相同的错误。

有效的是按照以下方式调用页面内的函数:

<script>
   function initMap() {
   //rest of the code
</script>
Run Code Online (Sandbox Code Playgroud)

并将其放在 api 调用之后。

我很欣赏这是控制台错误消息初始问题的解决方案,但我想从主 js 文件中启动并调用此函数,就像我对其余 JS 所做的一样。

任何帮助和解释,将不胜感激:) 谢谢

编辑 1 - 在下面添加更多代码并将函数移动到 main.js 文件的顶部

所以 main.js 现在看起来像 - webpack blob 开头,然后是:

function initMap() {
    var uluru = { lat: 40.741895, lng: …
Run Code Online (Sandbox Code Playgroud)

javascript google-maps asynchronous

0
推荐指数
1
解决办法
1040
查看次数