使用console.log从组织文件代码块内的JavaScript数组对象打印值时,我收到错误无效的读取语法:“]” 。包含字符串的数组会产生此错误。仅有数值的数组可以很好地打印到控制台。
我不确定org-babel为什么在console.log()上遇到困难。第一步,我尝试检查组织文件的编码。我自己使用node.js验证了我的代码。指定其他解释器(例如babel-cli)来评估代码块会产生相同的错误。
这有效
#+BEGIN_SRC js
let myarray = [1, 2, 3, 4, 5];
console.log(myarray);
#+END_SRC
#+RESULTS:
: [1 (\, 2) (\, 3) (\, 4) (\, 5)]
这不是
#+BEGIN_SRC js
let myarray = ["a", "b", "c", "d", "e"];
console.log(myarray);
#+END_SRC
我的组织配置文件中是否需要做些什么?我在Windows 7(内部版本1,x86_64-w64-mingw32)上使用Emacs 26.1版。 Node.js是10.15.3版。
答案 0 :(得分:0)
更正:
在我有不同的行试图返回/显示代码块内的值的地方,只有第一个return语句会产生结果(return终止了直接作用域)。似乎有效的方法是 process.stdout.write('yourcodehere' +'\ n');
示例:
尝试使用多个return语句
#+BEGIN_SRC js
return ([0,1,2,3,4]);
return ([5,6,7,8,9]);
#+END_SRC
#+RESULTS:
| 0 | 1 | 2 | 3 | 4 |
使用process.stdout.write()
#+BEGIN_SRC js
process.stdout.write([0, 1, 2, 3, 4] + '\n');
process.stdout.write(["a", "b", "c", "d", "e"] + '\n');
#+END_SRC
#+RESULTS:
: 0,1,2,3,4
: a,b,c,d,e
: undefined
上一条消息:
好的,我找到了一个简单的解决方案。使用返回代替 console.log()。我在Python中尝试了相同的示例,仅在使用return而不是print时得到了结果。所以我尝试了 我的JavaScript示例使用return作为最后一步,这可行 大。结果块中数组的格式看起来更好