如何从node.js控制台执行已存在的js程序? [等候接听]

问题描述 投票:-3回答:1

我正在尝试执行包含一些代码的js文件。但是,我不知道怎么也找不到任何文件。

我已经四处搜寻,试图找到解决方案。

我文件中的代码只有一行:console.log(“hello world”);

我见过一些人说我要做的就是粘贴在node.js控制台的文件路径中,但这对我不起作用。

请记住,我是node.js的新手,不是编程新手。

编辑:我在窗户上!

我的代码和控制台的图片:https://imgur.com/a/FuRGhO5

node.js
1个回答
-1
投票

在我的Linux / Debian系统上,通过command line,在shell中使用(所以#行是对bashzsh 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甚至不会显示)。考虑使用一些二进制编辑器(或一些十六进制转储程序)来检查它没有它们。

© www.soinside.com 2019 - 2024. All rights reserved.