簡體   English   中英

無法讀取未定義的屬性“對象”

[英]Cannot read property 'Object' of undefined

我正在嘗試在網頁中包含一個生成的js模塊。 但是它給了我一個錯誤: Uncaught TypeError: Cannot read property 'Object' of undefined $g["Object"]["freeze"]($env); Uncaught TypeError: Cannot read property 'Object' of undefined $g["Object"]["freeze"]($env);

最小的示例是:

文件index.html

<html>
  <head>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type"/>
  </head>
  <body>
    <!-- Note the usage of `type=module` here as this is an ES6 module -->
    <script type="module">

      import { foo } from './foo.js';

      console.log(foo());

    </script>
  </body>
</html>

文件foo.js

'use strict';
/* Scala.js runtime support
 * Copyright 2013 LAMP/EPFL
 * Author: Sébastien Doeraene
 */

/* ---------------------------------- *
 * The top-level Scala.js environment *
 * ---------------------------------- */

// Get the environment info
var $env = (typeof __ScalaJSEnv === "object" && __ScalaJSEnv) ? __ScalaJSEnv : {};

// Global scope
var $g =
  (typeof $env["global"] === "object" && $env["global"])
    ? $env["global"]
    : ((typeof global === "object" && global && global["Object"] === Object) ? global : this);
$env["global"] = $g;


$env["exportsNamespace"] = void 0;


// Freeze the environment info
$g["Object"]["freeze"]($env);

export function foo() { return "Hello"; }

但是,如果我只是將腳本復制粘貼到chrome控制台中,那么一切都會正常進行。

您正在Scala.js 0.6.x中遇到一個錯誤: https : //github.com/scala-js/scala-js/issues/3677 var $g = ...的全局檢測代碼在Node.js以外的ES模塊中(例如,在瀏覽器中)使用時不正確,並且無法發現正確的全局對象。

問題提到了一種解決方法:在HTML文件中添加以下<script>標記(在導入Scala.js代碼的標記之前):

<script type="text/javascript">
var __ScalaJSEnv = { global: window };
</script>

這將明確告訴Scala.js全局對象是什么,即window

該問題已在兩天前發布RC1 Scala.js 1.x中修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM