node.js 抛出 "Buffer.alloc is not a function" 错误

node.js throwing "Buffer.alloc is not a function" error

我正在努力将我的 ScalaJS 0.6.33 项目转换为 1.x。我按照文档中的指示从过渡到 1.0.0 开始。但是我得到一些错误,我的一些依赖项是用 ScalaJS 1.3 编译的,所以我现在试图跳转到 1.4.0。

我的直接问题是 运行 对我的 ScalaJS 代码的测试抛出了一个错误,该错误源自 node.js:

sbt:xplatform> test
comSetup.js:7
  var inBuffer = Buffer.alloc(0);
                        ^

TypeError: Buffer.alloc is not a function
    at comSetup.js:7:25
    at comSetup.js:61:4
    at Object.exports.runInThisContext (vm.js:54:17)
    at [stdin]:8:27
    at Object.exports.runInThisContext (vm.js:54:17)
    at Object.<anonymous> ([stdin]-wrapper:6:22)
    at Module._compile (module.js:425:26)
    at node.js:587:27
    at doNTCallback0 (node.js:428:9)
    at process._tickCallback (node.js:357:13)

这是在将我的节点安装更新到 15.7.0 之后。我注意到 http://www.scala-js.org/doc/project/js-environments.html 表示 nvm install 5.0。我首先尝试了(结果相同)。我认为 5.0 可能是一个错字,所以尝试了当前版本。同样的结果。我不知道我以前的节点版本是什么。

关于如何进行的任何建议?从 plugins.sbt 中选择的可能相关的行(不在上下文中!):

addSbtPlugin("com.vmunier" % "sbt-web-scalajs" % "1.1.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.4.0")
addSbtPlugin("org.portable-scala"        % "sbt-scalajs-crossproject"  % "1.0.0")
addSbtPlugin("org.scala-js" % "sbt-jsdependencies" % "1.0.0")
libraryDependencies += "org.scala-js" %% "scalajs-env-jsdom-nodejs" % "1.1.0"

我认为是build.sbt的相关部分:

lazy val commonSettings = Seq(
  scalaVersion := "2.12.13",
  ...
)

lazy val xplatform = crossProject(JSPlatform, JVMPlatform)
  .crossType(CrossType.Full)
  .in(file("_xplatform"))
  .settings(commonSettings)

lazy val xplatformJVM = xplatform.jvm
lazy val xplatformJS  = xplatform.js

lazy val browser = (project
  .in(file("_browser")))
  .settings(commonSettings)
  .settings(
    scalaJSUseMainModuleInitializer := true,
    jsEnv := new org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv(),
    libraryDependencies ++= Seq(
        "org.scala-js" %%% "scalajs-dom" % "1.1.0"  
      )
  )
  .enablePlugins(ScalaJSPlugin, ScalaJSWeb, JSDependenciesPlugin)
  .dependsOn(xplatformJS % "test->test;compile->compile")

@sjrd 是正确的,它是旧版本的节点。

我运行成一道题。在尝试解决该问题的过程中,我阅读了 JavaScript Environments,它说安装 nvm 然后

nvm install 5.0

我没有做足够的研究就做了这个。首先,v5.0 看起来很旧。我想知道这是否不应该是 nvm install 15.0(在撰写本文时当前为 15.7)。

我后来安装了 v15,但不知何故 v5.0 成为了新终端会话的默认设置。

一旦我摆脱了 v5.0,这个特殊问题就消失了。