为啥某些东西可能在节点中执行而不是在 REPL 中?
Posted
技术标签:
【中文标题】为啥某些东西可能在节点中执行而不是在 REPL 中?【英文标题】:Why might something execute in node but not in the REPL?为什么某些东西可能在节点中执行而不是在 REPL 中? 【发布时间】:2017-01-28 20:29:20 【问题描述】:我有以下脚本:
const lib = require('./lib.js');
const fs = require('fs');
const graph = fs.readFileSync('../js-working-dir/add_graph.pb', 'utf8');
const sess = new lib.Session(graph);
const results = sess.run("a": 5, "b": 6, ["o"]);
console.log(results[0]);
(对于上下文lib.js
是一个编译的emscripten 模块;它相当大,大约40MB,否则我会上传它。)
当我在节点中执行此脚本时,它工作正常。但是,当我在 REPL(相同的工作目录和所有内容)中执行它时,我的代码会挂在 const sess = new lib.Session(graph);
上。
对为什么会出现这种情况有任何想法吗? Emscripten 是否以不同的方式对待 REPL 和节点执行?有什么方法可以调试卡住的地方吗?
非常感谢,
【问题讨论】:
如果有人有想法(只是因为它比较大),我宁愿不上传文件,但如果一天之内没有人有任何想法,我会想办法... 不知道什么会造成差异——在调用 Session 时通过在 lib.js 中添加日志来缩小差异会很困难吗? 现在可以试一试并报告,真是一个奇怪的错误,我想我必须遗漏一些明显的东西...... 【参考方案1】:发现问题,似乎是 urandom 中的错误...
https://github.com/kripken/emscripten/issues/4905
【讨论】:
以上是关于为啥某些东西可能在节点中执行而不是在 REPL 中?的主要内容,如果未能解决你的问题,请参考以下文章
为啥“ARFaceTrackingConfiguration.isSupported”语句在 AppDelegate 中,而不是在 ViewController 中?