如何从scala.js调用nodejs模块?

时间:2015-02-22 09:28:00

标签: node.js scala.js

我正在尝试使用scala.js + nw.js编写一些应用程序,并将在scala.js中使用一些节点模块。但我不知道该怎么做。

说,有模块fs,我可以在Javascript中编写这样的代码:

var fs = require('fs');
fs.writeFile("/tmp/test", "Hey there!", function(err) {
    if(err) {
        console.log(err);
    } else {
        console.log("The file was saved!");
    }
}); 

但是如何从头开始在scala.js中做同样的事情?

1 个答案:

答案 0 :(得分:9)

使用js.Dynamicjs.DynamicImplits(另请参阅a longer answer on the topic),您可以在Scala.js中音译代码:

import scala.scalajs.js
import js.Dynamic.{global => g}
import js.DynamicImplicits._

val fs = g.require("fs")
fs.writeFile("/tmp/test", "Hey there!", { (err: js.Dynamic) =>
  if (err)
    console.log(err)
  else
    console.log("The file was saved!")
})

您可以在此处使用Scala.js中的Node.js fs模块找到更长的源代码: https://github.com/scala-js/scala-js/blob/v0.6.0/tools/js/src/main/scala/org/scalajs/core/tools/io/NodeVirtualFiles.scala