TypeError: Cannot read property 'freeze' of undefined
TypeError: Cannot read property 'freeze' of undefined
我正在尝试为 npm 库创建外观 avsc。当我使用 sbt fastOptJS::webpack
编译并打开 .html 文件时,我在行 $g["Object"]["freeze"]($env);
中从文件 treepad-fastopt-bundle.js
中得到 Uncaught TypeError: Cannot read property 'freeze' of undefined
。我不会在任何地方使用 Object.freeze 它。
这是门面代码:
import buffer.Buffer
import scala.scalajs.js
import scala.scalajs.js.annotation.{JSImport, JSName}
@js.native
trait Type extends js.Object {
@JSName("val")
def toBuffer(v: String): Buffer = js.native
}
@JSImport("avsc/", "avro")
@js.native
object avro extends avro
@js.native
trait avro extends js.Object {
def parse(schema: js.Any): Type = js.native
}
也看看全文project,代码很少
使用 @JSImport("avsc", JSImport.Namespace)
并没有改变任何东西。
问题来自这样一个事实,即在您的 webpack configuration file 中,您告诉 webpack 以 Node.js 执行环境而不是网络浏览器为目标。
但是,如您所见,avsc
模块使用 fs
Node.js 模块,该模块在网络浏览器中不可用。在这种情况下,似乎正确的解决方法是将以下行添加到您的 webpack 配置文件中:
module.exports.node = { fs: "empty" };
最后,右边的@JSImport
确实是@JSImport("avsc", JSImport.Namespace)
,因为要导入整个avsc
模块,如图the documentation.
我正在尝试为 npm 库创建外观 avsc。当我使用 sbt fastOptJS::webpack
编译并打开 .html 文件时,我在行 $g["Object"]["freeze"]($env);
中从文件 treepad-fastopt-bundle.js
中得到 Uncaught TypeError: Cannot read property 'freeze' of undefined
。我不会在任何地方使用 Object.freeze 它。
这是门面代码:
import buffer.Buffer
import scala.scalajs.js
import scala.scalajs.js.annotation.{JSImport, JSName}
@js.native
trait Type extends js.Object {
@JSName("val")
def toBuffer(v: String): Buffer = js.native
}
@JSImport("avsc/", "avro")
@js.native
object avro extends avro
@js.native
trait avro extends js.Object {
def parse(schema: js.Any): Type = js.native
}
也看看全文project,代码很少
使用 @JSImport("avsc", JSImport.Namespace)
并没有改变任何东西。
问题来自这样一个事实,即在您的 webpack configuration file 中,您告诉 webpack 以 Node.js 执行环境而不是网络浏览器为目标。
但是,如您所见,avsc
模块使用 fs
Node.js 模块,该模块在网络浏览器中不可用。在这种情况下,似乎正确的解决方法是将以下行添加到您的 webpack 配置文件中:
module.exports.node = { fs: "empty" };
最后,右边的@JSImport
确实是@JSImport("avsc", JSImport.Namespace)
,因为要导入整个avsc
模块,如图the documentation.