Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Node.js 如何在express 4中禁用jade/模板引擎_Node.js_Express 4 - Fatal编程技术网

Node.js 如何在express 4中禁用jade/模板引擎

Node.js 如何在express 4中禁用jade/模板引擎,node.js,express-4,Node.js,Express 4,我对express是新手,我想探索express的工作原理 我正在使用最新版本的express 4(4.8.1) 我不想使用任何模板引擎。我想手动提供我的HTML内容 我该怎么做? 我在这里搜索了几个问题是StackOverflow,我找到了一个解决方案。 我所要做的就是把下面几行注释掉 // view engine setup //app.set('views', path.join(__dirname, 'views')); //app.set('view engine', 'jade');

我对express是新手,我想探索express的工作原理

我正在使用最新版本的
express 4(4.8.1)

我不想使用任何模板引擎。我想手动提供我的HTML内容

我该怎么做? 我在这里搜索了几个问题是StackOverflow,我找到了一个解决方案。 我所要做的就是把下面几行注释掉

// view engine setup
//app.set('views', path.join(__dirname, 'views'));
//app.set('view engine', 'jade');
但是当我这样做的时候,当我从浏览器点击我的服务器时,我得到了以下错误

Error: No default engine was specified and no extension was provided.
   at new View (/Users/adi/Desktop/srserver/node_modules/express/lib/view.js:41:42)
   at Function.app.render (/Users/adi/Desktop/srserver/node_modules/express/lib/application.js:499:12)
   at ServerResponse.res.render (/Users/adi/Desktop/srserver/node_modules/express/lib/response.js:955:7)
   at module.exports (/Users/adi/Desktop/srserver/app.js:50:9)
   at Layer.handle_error (/Users/adi/Desktop/srserver/node_modules/express/lib/router/layer.js:52:5)
   at trim_prefix (/Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:261:13)
   at /Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:230:9
   at Function.proto.process_params (/Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:305:12)
   at /Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:221:12
   at Function.match_layer (/Users/adi/Desktop/srserver/node_modules/express/lib/router/index.js:288:3)
这是完整的代码。(app.js)

另外,我从
package.json中删除了
jade
,您有两个选择:

  • 使用模板引擎Jade、ejs等。。 并使用res.render表示渲染模板
  • 只使用静态文件和api调用,而不只是调用api,并使用从服务器返回的json在客户端呈现视图。 res.send({users:[{id:1,name'adi'},{id:2,name'dave']})

  • 如果您试图将express用于Apache或nginx之类的东西,我认为您应该使用以下命令直接发送html文件

     res.sendFile('path/toFile')
    
    您还可以查看,以了解有关该方法的详细信息


    这还提到了一些替代方案,如让express作为静态文件提供html。

    注释此代码是正确的:

    // view engine setup
    //app.set('views', path.join(__dirname, 'views'));
    //app.set('view engine', 'jade');
    
    出现此错误的原因是./public目录中没有提供文件扩展名为的文件。错误的第二部分是:

    没有提供延期

    express 4服务器到服务器静态html文件所需的唯一代码如下:

    app.use(express.static(path.join(__dirname, 'public')));
    
    它告诉您的express服务器在./public目录中查找静态文件

    如果添加./public/index.html,则可以将其作为静态文件使用


    希望这有帮助

    以上答案中缺少一点

    render
    呼叫表示不满,因此您需要做的只是:

  • 按正确的方式对视图进行注释(也如前所述)
  • 替换所有
    render
    调用:

  • 我知道这是个老问题,但我犯了一些错误

    您需要更改@Kfir errez所说的内容,并更改routes/index.js中的响应:

    router.get('/', function(req, res, next) {
       res.render('index', { title: 'Express' });
    });
    
    例如:

    router.get('/', function(req, res, next) {
       res.send('index');
    });
    

    此处回答了此问题的可能重复:
    res.status(500).json({
            message: err.message,
            error: err
        });
    
    router.get('/', function(req, res, next) {
       res.render('index', { title: 'Express' });
    });
    
    router.get('/', function(req, res, next) {
       res.send('index');
    });