无法读取未定义的 属性 'Object'
Cannot read property 'Object' of undefined
我想在我的网页中包含一个生成的 js 模块。然而它给了我一个错误: Uncaught TypeError: Cannot read property 'Object' of undefined
at $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
。
问题已在 Scala.js 1.x 中修复,其 RC1 was released two days ago.
我想在我的网页中包含一个生成的 js 模块。然而它给了我一个错误: Uncaught TypeError: Cannot read property 'Object' of undefined
at $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
。
问题已在 Scala.js 1.x 中修复,其 RC1 was released two days ago.