如何在J2V8中包含依赖项?我想在javascript文件中使用某些依赖项,例如crypto包。
var crypto = require('crypto');
function foo(){ return crypto.createHash('md5').update('Apple').digest("hex");}
但是,我收到以下错误:require
关键字未定义。
undefined:1: ReferenceError: require is not defined
var crypto = require('crypto');
^
ReferenceError: require is not defined at <anonymous>:1:14
com.eclipsesource.v8.V8ScriptExecutionException
at com.eclipsesource.v8.V8._executeVoidScript(Native Method)
有人能告诉我如何将软件包导入J2V8吗?
答案 0 :(得分:0)
除非您使用Node,否则require
不是一项功能。通常,您希望使用像webpack这样的捆绑器将结构化源代码打包到一个大文件中,以便浏览器能够理解它。通过这种方式,您可以为前端代码使用require和npm包,这使得开发更容易,并且捆绑器将每次构建(或实时更新)转换为不同的格式,这对于人类来说很难阅读,但却是有效的Javascript。 / p>
答案 1 :(得分:0)
我在J2v8中使用节点模块取得了成功,请查看此博客:http://eclipsesource.com/blogs/2016/07/20/running-node-js-on-the-jvm/
NodeJs nodeJS = NodeJs.createNodeJs();
注册回调后
nodeJs.exec(文件thescripttoexecute)
确保在require()命令中具有到节点模块的正确路径。
答案 2 :(得分:0)
您可能必须创建一个nodejs包,它接受依赖项并导出您需要的内容。然后,您必须手动执行npm install
。
或者您可以npm install what-you-need
。
创建Node JS Runtime,并将require与your-package-dir/index.js
或您需要的模块的确切位置一起使用。像这样:
V8Object module = nvm.require(file);
现在你可以调用函数like:
module.executeJSFunction("test");
要提供整个依赖关系,您必须将模块目录捆绑自己。
如果您必须支持跨平台,请参考https://www.npmjs.com/package/node-pre-gyp。