node.js 抛出“Buffer.alloc 不是函数”错误

如何解决node.js 抛出“Buffer.alloc 不是函数”错误

我正在将我的 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 可能是一个错字,所以尝试了当前版本。结果一样。我不知道我以前的 node 版本是什么。

关于如何进行的任何建议? 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,这个特殊问题就消失了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?