【问题标题】:TypeError : string is not a function?TypeError:字符串不是函数?
【发布时间】:2015-11-01 08:15:40
【问题描述】:

大家好,我是 node js 的新手

我正在尝试运行以下代码

var express = require('express'),
    app = express(),
    cons = require('consolidate'); // Templating library adapter for Express

    app.engine('html', cons.swig);
    app.set('view engine', 'html');
    app.set('views', __dirname + '/views');

    app.get('/', function(req, res){
        res.render('hello', { name : 'World' });
    });

    app.get('*', function(req, res){
        res.send('Page Not Found', 404);
    });

    app.listen(8080);
    console.log('Express server started on port 8080');

然后错误来了

TypeError:字符串不是函数 在 EventEmitter.render (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\application.js:569:12) 在 ServerResponse.render (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\response.js:961:7) 在 C:\Users\YAm\Desktop\mongodb\work\test_coso.js:10:6 在 Layer.handle [as handle_request] (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\layer.js:95:5) 在下一个(C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\route.js:131:13) 在 Route.dispatch (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\layer.js:95:5) 在 C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\index.js:277:22 在 Function.process_params (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\index.js:330:12) 在下一个(C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\index.js:271:10) 在 expressInit (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\middleware\init.js:33:5) 在 Layer.handle [as handle_request] (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\index.js:312:13) 在 C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\index.js:280:7 在 Function.process_params (C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\index.js:330:12) 在下一个(C:\Users\YAm\Desktop\mongodb\work\node_modules\express\lib\router\index.js:271:10)

【问题讨论】:

  • expressjs和consolidate等所有依赖都安装了吗?
  • 看起来您对res.render() 的调用正在由需要res.render(view [, locals] [, callback]) 的Express 实现提供服务。我猜你的模板/视图引擎没有正确安装或初始化,或者你没有正确使用它。

标签: javascript node.js mongodb


【解决方案1】:

代码没有任何问题,对我来说工作正常

执行以下操作来调试问题

  1. 检查views文件夹中的hello.html文件删除所有 html 代码并尝试输入一些简单的“Hello Word”
  2. 创建一个新文件夹并复制粘贴 js 脚本和视图 文件夹,然后尝试 npm install express、合并和 swig
  3. 检查 v5.5.0 的节点版本,它工作正常,没有任何 问题

【讨论】:

    【解决方案2】:

    只需查看express res.render() 的文档即可。我认为你的语法有问题。

    // send the rendered view to the client
    res.render('index');
    
    // if a callback is specified, the rendered HTML string has to be sent explicitly
    res.render('index', function(err, html) {
      res.send(html);
    });
    
    // pass a local variable to the view
    res.render('user', { name: 'Tobi' }, function(err, html) {
      // ...
    });
    

    【讨论】:

      猜你喜欢
      • 2012-12-14
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 2018-02-26
      • 2015-05-25
      • 2014-05-18
      • 1970-01-01
      • 2021-02-27
      相关资源
      最近更新 更多