如何从node.js控制台执行已存在的js程序? [等候接听]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从node.js控制台执行已存在的js程序? [等候接听]相关的知识,希望对你有一定的参考价值。
我正在尝试执行包含一些代码的js文件。但是,我不知道怎么也找不到任何文件。
我已经四处搜寻,试图找到解决方案。
我文件中的代码只有一行:console.log(“hello world”);
我见过一些人说我要做的就是粘贴在node.js控制台的文件路径中,但这对我不起作用。
请记住,我是node.js的新手,不是编程新手。
编辑:我在窗户上!
我的代码和控制台的图片:https://imgur.com/a/FuRGhO5
在我的Linux / Debian系统上,通过command line,在shell中使用(所以#
行是对bash
或zsh
shell的注释,而单引号'
是用于shell quotation,所以shell会删除它,在下面的例子中,nodejs
两个都没有看到任何一个terminal emulator
# evaluate a string as a statement
nodejs -e 'console.log("hello world")'
和
# create a file then run it
echo 'console.log("hello world");' > /tmp/hello.js
nodejs /tmp/hello.js
# dont forget to remove that /tmp/hello.js file
和
# pass the javascript code to the stdin of nodejs thru a pipeline
# the simple quotes are a shell quotation so are not sent to nodejs
echo 'console.log("hello world");' | nodejs
我正在做我期望的事情(上面的所有echo
命令都将他们的不带引号的参数逐字地发送到stdout,附加了最后的换行符)。第一个命令直接运行hello world语句,第二个命令组创建一个JavaScript文件/tmp/hello.js
然后运行它。第三个pipeline正在向nodejs
的stdin发送一些JavaScript
我之前从未使用过nodejs
(只是安装了nodejs
软件包1.15.2来运行该示例),但为了回答你的问题,我只是运行了nodejs --help
请注意,上面的第一个或第三个例子中没有涉及我的文件。当然,第二个例子确实创建了一个/tmp/hello.js
文件(后来应该用rm /tmp/hello.js
删除)
顺便说一下,创建小型临时文件非常快(它们位于page cache中,如果快速删除,实际上甚至可能永远不会进入磁盘)。例如,在我的程序中,我经常生成一个临时的/tmp/generated.c
文件,用gcc
编译成插件/tmp/plugin.so
,然后插入dlopen(3);对于一个小的generated.c
文件,这一切都运行得非常快。您可以使用nodejs
为生成的JavaScript文件执行类似的操作。
生成JavaScript代码时,不要害羞地将它放在一些临时文件中。当然,一定要生成语法正确的JavaScript文件(但是如何做到这是一个非常不同的问题;建议在生成器程序中在内存中构建一些AST,然后以递归方式将该AST作为JavaScript代码发出)。
也许你想在你的脚本中包含另一个文件。然后看看How do I include a JavaScript file in another JavaScript file?,但这不是你问的问题:程序或脚本这个词的含义与文件不同
PS。将我的示例改编为Windows是一项微不足道的工作,因为nodejs是一个移植到多个操作系统(包括Windows)的程序。在Linux上,nodejs
是一个command line program。您也应该在命令行上尝试它,即使在Windows上也是如此。
注意:你的问题缺少一些MCVE所以不清楚,我猜你正在生成或处理一些错误的JavaScript代码。添加的图片是不可读的,您的JavaScript代码可能有奇怪但不可见的字符(许多source code editors甚至不会显示)。考虑使用一些二进制编辑器(或一些十六进制转储程序)来检查它没有它们。
以上是关于如何从node.js控制台执行已存在的js程序? [等候接听]的主要内容,如果未能解决你的问题,请参考以下文章