Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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 app中异步执行res.render_Javascript_Node.js_Express_Asynchronous_Router - Fatal编程技术网

Javascript 在express app中异步执行res.render

Javascript 在express app中异步执行res.render,javascript,node.js,express,asynchronous,router,Javascript,Node.js,Express,Asynchronous,Router,我尝试使此路由器响应异步: var express = require('express'), router = express.Router(); router.get('/', function(req, res, next) { res.render('contact', { titleShown: true, title: 'Contact' }); }); 我试图实现我读到的async,但没有成功: var express = require('e

我尝试使此路由器响应异步:

var express = require('express'),
    router  = express.Router();

router.get('/', function(req, res, next) {
  res.render('contact', {
    titleShown: true,
    title: 'Contact'
  });
});
我试图实现我读到的
async
,但没有成功:

var express = require('express'),
    router  = express.Router(),
    async   = require('async');

router.get('/', function(req, res, next) {
  async.parallel([
    res.render('contact', {
      titleShown: true,
      title: 'Contact'
    })
  ], req);
});
我该怎么做

使用
--跟踪同步io
标志时收到的错误消息:

WARNING: Detected use of sync API
    at fs.statSync (fs.js:892:18)
    at tryStat (C:\www\node\website\node_modules\express\lib\view.js:169:15)
    at resolve (C:\www\node\website\node_modules\express\lib\view.js:142:14)
    at lookup (C:\www\node\website\node_modules\express\lib\view.js:110:17)
    at View (C:\www\node\website\node_modules\express\lib\view.js:85:20)
    at render (C:\www\node\website\node_modules\express\lib\application.js:569:12)
    at render (C:\www\node\website\node_modules\express\lib\response.js:961:7)
    at C:\www\node\website\routes\contact.js:9:7
    at handle (C:\www\node\website\node_modules\express\lib\router\layer.js:95:5)

不,
res.render
不是完全异步的(目前)。因此错误实际上来自
res.render

是的,res.render API中有同步部分(很糟糕),但是 将在Express 5.0中解决,因为没有 破坏视图引擎兼容性

使用NODE_ENV=production启动应用程序或设置 缓存为true进行渲染只会导致文件系统活动 启动时每个视图一次,这使得在 由于没有同步文件系统,应用程序完全在生产环境中运行 由于视图已缓存,因此将调用


不,
res.render
不是完全异步的(目前)。因此错误实际上来自
res.render

是的,res.render API中有同步部分(很糟糕),但是 将在Express 5.0中解决,因为没有 破坏视图引擎兼容性

使用NODE_ENV=production启动应用程序或设置 缓存为true进行渲染只会导致文件系统活动 启动时每个视图一次,这使得在 由于没有同步文件系统,应用程序完全在生产环境中运行 由于视图已缓存,因此将调用


异步响应是什么意思?contact.js中的第9行第9列是
res.render
,这就是为什么我认为它不是异步的。我用错误消息更新了我的问题。res.render已经是异步的。如果您这样做:
router.get('/',(req,res,next)=>{res.render('contact',{title:'contact'},(err,html)=>{console.log('sent this static stuff');});console.log('this async');});您可能会看到“发送此静态内容”之前会出现什么“this is async”字符串,因为所有这些内容都是异步的。
这是express Handlebar模板引擎。从错误消息来看,似乎使用了
fs.statSync
,这是
fs.stat
的同步形式。在这种情况下为什么要使用
fs.statSync
?将contact.js重命名为contact.hbs!!如果你仍然收到错误,那么问题在于你的联系人的内容异步响应是什么意思?contact.js中的第9行第9列是
res.render
,这就是为什么我认为它不是异步的。我用错误消息更新了我的问题。res.render已经是异步的。如果您这样做:
router.get('/',(req,res,next)=>{res.render('contact',{title:'contact'},(err,html)=>{console.log('sent this static stuff');});console.log('this async');});您可能会看到“发送此静态内容”之前会出现什么“this is async”字符串,因为所有这些内容都是异步的。
这是express Handlebar模板引擎。从错误消息来看,似乎使用了
fs.statSync
,这是
fs.stat
的同步形式。在这种情况下为什么要使用
fs.statSync
?将contact.js重命名为contact.hbs!!如果你仍然收到错误,那么问题在于你的联系人的内容