gpt4 book ai didi

electron - 在 Electron 中使用 Elm 0.19 时无法读取未定义的属性 'Elm'

转载 作者:行者123 更新时间:2023-12-03 12:21:22 25 4
gpt4 key购买 nike

我正在用 Electron 试验 Elm 0.19,在 Electron 中构建一个简单的 Elm 应用程序(基于 Counter 示例)。当我运行 electron-forge start 时,出现错误,提示 Cannot read property 'Elm' of undefined 突出显示 scope['Elm'] elm.js 文件的一部分。

function _Platform_export(exports) {
scope[‘Elm’] ? _Platform_mergeExportsDebug(‘Elm’, scope[‘Elm’], exports) : scope[‘Elm’] = exports;
}

有趣的是,如果我运行 elm-live Main.elm --open -- ,完全相同的文件(Main.elm、index.html)打开得很好(按预期显示计数器) --output=elm.js 改为。

因此,在 Electron 中传递给 elm.js 的 this 似乎未定义,从而导致 scope 未定义。

Chrome 开发工具显示,在 Electron 应用程序中,传递给 elm.js 的 scope 变量是 未定义。对于 elm-live,该值是 Window 对象。

elm.js

(function(scope){
'use strict';

--- omitted ----

var author$project$Main$main = elm$browser$Browser$sandbox({ init: author$project$Main$init, update: author$project$Main$update, view: author$project$Main$view });
_Platform_export({ 'Main': { 'init': author$project$Main$main(elm$json$Json$Decode$succeed(_Utils_Tuple0))(0) } });
})(undefined);

elm.js? [SM]

(function(scope){
'use strict';

--- omitted ----

var author$project$Main$main = elm$browser$Browser$sandbox(
{init: author$project$Main$init, update: author$project$Main$update, view: author$project$Main$view});
_Platform_export({'Main':{'init':author$project$Main$main(
elm$json$Json$Decode$succeed(_Utils_Tuple0))(0)}});}(this));

错误信息

Uncaught TypeError: Cannot read property 'Elm' of undefined
at _Platform_export (elm.js:1949)
at elm.js:4004
at elm.js:4005
index.html:44 Uncaught ReferenceError: Elm is not defined
at index.html:44

索引.html

<!DOCTYPE HTML>
<html>

<head>
</head>

<body>
<div id="elm"></div>
</body>
<script src="./elm.js"></script>
<script>
var app = Elm.Main.init({
node: document.getElementById('elm')
});
</script>
</html>

Main.elm

import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)


main =
Browser.sandbox { init = init, update = update, view = view }


-- MODEL

type alias Model = Int

init : Model
init =
0


-- UPDATE

type Msg = Increment | Decrement

update : Msg -> Model -> Model
update msg model =
case msg of
Increment ->
model + 1

Decrement ->
model - 1


-- VIEW

view : Model -> Html Msg
view model =
div []
[ button [ onClick Decrement ] [ text "-" ]
, div [] [ text (String.fromInt model) ]
, button [ onClick Increment ] [ text "+" ]
]

最佳答案

在 Slack 上的 Elm #electron channel 中,我看到了有关此问题的讨论,这里为感兴趣的人提供了回顾。

  1. 问题在于 Electron 渲染器中未定义“this”
  2. 这会导致 Elm 运行时内的范围未定义
  3. 可能的解决方法是

关于electron - 在 Electron 中使用 Elm 0.19 时无法读取未定义的属性 'Elm',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52902903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com