请问我如何添加运行时选项来禁用检查或此警告

pav*_*tin 4 runtime-error handlebars.js

我正在创建一个联系表单,它将在屏幕上显示一些消息,让用户知道表单已成功提交,但是,我总是在我的 git 终端中收到错误消息。下面是错误信息。

Handlebars:访问已被拒绝解析属性“消息”,因为它不是其父级的“自己的属性”。您可以添加运行时选项以禁用检查或此警告:有关详细信息,请参阅https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access

下面是 server.js 和 message.handlebars 代码;

app.post('/contactUs',function(req,res){
    console.log(req.body);
    //res.send('thanks');
    const newMessage = {
        fullname: req.body.fullname,
        email: req.body.email,
        message: req.body.message,
        date: new Date()
    }


    new Message(newMessage).save(function(err, message){
        if (err){
            throw err;
        }else{
            Message.find({}).then(function(messages){
                if(messages){                    
                    res.render('newmessage',{
                        title: 'Sent',
                        messages:messages
                    });
                }else{
                    res.render('noMessage',{
                        title: 'Not found'
                    });
                }
            });
        }

    });

});


<h1>Thank you for contacting</h1>
{{#each messages}}
<p>{{fullname}}</p>
<p>{{email}}</p>
<p>{{message}}</p>
<small>{{date}}</small>
<hr>
{{else}}
<p>No messages</p>
{{/each}}
<a href="/contact"><button class="btn btn-success">Contact Again</button></a>
Run Code Online (Sandbox Code Playgroud)

小智 5

我猜你在做我正在做的约会应用程序教程。我按照给定的链接解决了这个问题:https : //handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access 然后我下载了包 npm install @handlebars/allow-prototype -access 然后在 server.js 添加:

const express = require('express');
const Handlebars = require('handlebars')
const expressHandlebars = require('express-handlebars');
const {allowInsecurePrototypeAccess} = require('@handlebars/allow-prototype-access')
Run Code Online (Sandbox Code Playgroud)

在 server.js 中向下滚动到 app.engine:

    // setup view engine
app.engine('handlebars', exphbs({
  defaultLayout: 'main',

}));
app.set('view engine', 'handlebars');
Run Code Online (Sandbox Code Playgroud)

然后添加:handlebars: allowInsecurePrototypeAccess(Handlebars) 它应该是这样的:

// setup view engine
app.engine('handlebars', exphbs({
  defaultLayout: 'main',
   handlebars: allowInsecurePrototypeAccess(Handlebars)
}));
app.set('view engine', 'handlebars');
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。祝你好运。


iso*_*chn 0

这可能是由于最新版本的 Handlebars 导致的,但这可以通过添加对 Handlebars 的依赖关系来解决。

npm i -D handlebars@4.5.0