Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Express和EJS从另一个js文件传递JSON_Javascript_Node.js_Json_Express_Ejs - Fatal编程技术网

Javascript 使用Express和EJS从另一个js文件传递JSON

Javascript 使用Express和EJS从另一个js文件传递JSON,javascript,node.js,json,express,ejs,Javascript,Node.js,Json,Express,Ejs,我正在从事一个使用CUPS命令行管理打印机的项目,我有多个“api”可以让我有不同的想法,现在我只想在视图中看到我解析的JSON结果,但我不知道如何通过Express传递该值,然后在EJS视图中呈现它: 我的api: constspawnsync=require(“子进程”).spawnSync; const parseStdout=require('../utils/utils.js'); 函数lpstat(){ 让printerList=spawnSync(“lpstat-p”{ 超时:10

我正在从事一个使用CUPS命令行管理打印机的项目,我有多个“api”可以让我有不同的想法,现在我只想在视图中看到我解析的JSON结果,但我不知道如何通过Express传递该值,然后在EJS视图中呈现它:

我的api:

constspawnsync=require(“子进程”).spawnSync;
const parseStdout=require('../utils/utils.js');
函数lpstat(){
让printerList=spawnSync(“lpstat-p”{
超时:10000,
编码:“utf-8”,
});
让parsedList=parseStdout(printerList);
let onlyPrinterList=parsedList.filter(函数(行){
返回line.match(line.match(/^printer/)| | line.match(/^impressora/);
});
让onlyPrinterNames=onlyPrinterList.map(函数(打印机){
返回打印机。匹配(/(?:\S+/)[0]。修剪();
});
process.on('退出',(代码)=>{
process.kill();
});
//这就是我想传递给视图的内容
返回JSON.stringify(仅限打印机名称);
}
我的app.js

const express=require('express');
常量app=express();
app.listen(3000);
应用程序集(“查看引擎”、“ejs”);
app.get('/lpstat',(req,res)=>{
//我应该在这里用什么?
res.render('lpstat')
});
我的lpstat.ejs


lpstat
lpstat结果:


res.render中的第二个参数定义了提供给模板的数据:

app.get('/lpstat',异步(req,res)=>{
//在此处调用api以填充变量
const printers=lpstat()
res.render('lpstat'{
印刷工
})
});
您将能够在您的ejs模板中使用它

lpstat结果:


您需要将
callApi
替换为用于获取数据的任何函数。我使用async/await来获得一个更简单的答案,也可以通过回调来完成。

在技术说明中,您的“API”不是API,用于获取数据的URL是API的一部分。另外,从
spawn
调用中获取数据的代码是。。特别的你不使用给你的例子做这件事有什么原因吗?(向下滚动到“运行<代码>ls-lh/usr”的示例)它是否改变了我现在使用的同步功能?我不能对同步进程使用回调,对吗?你能再举一个例子吗?因为你的函数是同步的,现在你可以删除等待部分了。我将编辑我的答案。