无法在 ScalaJS 中编写 CommonJS 模块,该模块在 Atom 编辑器中作为插件获得 "imported"
Unable to write a CommonJS module in ScalaJS that gets "imported" in Atom editor as a plugin
如果我想将一些ScalaJS方法导出为CommonJS模块,我该怎么办?我有以下但它似乎不起作用:
@ScalaJSDefined
@JSExportTopLevel("default")
object SourceFetch extends js.Object {
def activate(state: js.Dynamic): Unit = {
global.console.log("activate")
}
def deactivate(): Unit = {
global.console.log("deactivate")
}
}
是的,scalaJSModuleKind := ModuleKind.CommonJSModule 在 build.sbt.
我想要的输出是一个如下所示的 commonjs 模块;
export default {
activate(state) {
console.log("activate");
}.
deactivate() {
console.log("deactivate");
}
};
我最后做的是使用已弃用的 sbt 密钥 "scalaJSOutputWrapper" 并在输出 JS 文件的末尾附加 'module.exports = exports["default"];'。
我试过 "scalaJSUseMainModuleInitializer" 但我只能得到 "module.exports" 而不是 "exports" 并且 "module.exports" 的值未定义。
您上面的代码片段确实对应于您编写的那段 ECMAScript 2015 代码。但是,这不会将方法导出为模块的直接成员,而是导出为 default
对象的成员。不,default
导出与模块本身不同(尽管很多人这么认为)。
要将函数导出为模块的直接成员,您应该这样写:
object SourceFetch {
@JSExportTopLevel("activate")
def activate(state: js.Dynamic): Unit = {
global.console.log("activate")
}
@JSExportTopLevel("deactivate")
def deactivate(): Unit = {
global.console.log("deactivate")
}
}
如果我想将一些ScalaJS方法导出为CommonJS模块,我该怎么办?我有以下但它似乎不起作用:
@ScalaJSDefined
@JSExportTopLevel("default")
object SourceFetch extends js.Object {
def activate(state: js.Dynamic): Unit = {
global.console.log("activate")
}
def deactivate(): Unit = {
global.console.log("deactivate")
}
}
是的,scalaJSModuleKind := ModuleKind.CommonJSModule 在 build.sbt.
我想要的输出是一个如下所示的 commonjs 模块;
export default {
activate(state) {
console.log("activate");
}.
deactivate() {
console.log("deactivate");
}
};
我最后做的是使用已弃用的 sbt 密钥 "scalaJSOutputWrapper" 并在输出 JS 文件的末尾附加 'module.exports = exports["default"];'。
我试过 "scalaJSUseMainModuleInitializer" 但我只能得到 "module.exports" 而不是 "exports" 并且 "module.exports" 的值未定义。
您上面的代码片段确实对应于您编写的那段 ECMAScript 2015 代码。但是,这不会将方法导出为模块的直接成员,而是导出为 default
对象的成员。不,default
导出与模块本身不同(尽管很多人这么认为)。
要将函数导出为模块的直接成员,您应该这样写:
object SourceFetch {
@JSExportTopLevel("activate")
def activate(state: js.Dynamic): Unit = {
global.console.log("activate")
}
@JSExportTopLevel("deactivate")
def deactivate(): Unit = {
global.console.log("deactivate")
}
}