Handlebars:访问已被拒绝解析属性“some prop”,因为它不是其父级的“自己的属性”

Posted

技术标签:

【中文标题】Handlebars:访问已被拒绝解析属性“some prop”,因为它不是其父级的“自己的属性”【英文标题】:Handlebars: Access has been denied to resolve the property "some prop" because it is not an "own property" of its parent 【发布时间】:2020-10-04 17:15:23 【问题描述】:

mongo 型号:

const mongoose = require('mongoose');


const  ProductSchema = mongoose.Schema(
    _id:mongoose.Schema.Types.ObjectId,
    Pid:Number,
    Pname:String,
    Price: Number,
    Pdesc: String,
    Picname: String
);

module.exports = mongoose.model('product',ProductSchema )

产品的控制者:

const express = require('express');
const Product = require('../models/products');
module.exports = 
ShowProduct:(req, res, next)=>
    Product.find().then((products)=>
        console.log(products);
        res.render('products', layout: 'index', listProd:products);
    );

这是 products.hbs:

<div class="row">
  #each products
<div class="col-3" id=this.Pid>
    <h1>Pname:this.Pname</h1>
    <div>Price:this.Price</div>
        <div>Pdesc:this.Pdesc</div>
  </div>
/each
</div>

在浏览器中我看不到产品 我看到产品的数量 因为每个

需要解决什么问题?

【问题讨论】:

【参考方案1】:

我也有这个问题。据我了解,它与您的车把文件的扩展 .hbs 相关。您需要做的就是:

    npm install @handlebars/allow-prototype-access

    添加 const allowInsecurePrototypeAccess = require('@handlebars/allow-prototype-access') 你的全部观点

    不要忘记添加车把选项! const hbs = exphbs.create( defaultLayout: 'main', extname: 'hbs', handlebars: allowInsecurePrototypeAccess(Handlebars) );

【讨论】:

以上是关于Handlebars:访问已被拒绝解析属性“some prop”,因为它不是其父级的“自己的属性”的主要内容,如果未能解决你的问题,请参考以下文章

Handlebars:访问已被拒绝解析属性“some prop”,因为它不是其父级的“自己的属性”

解决了! Handlebars:访问已被拒绝解析属性“名称”,因为它不是其父级的“自己的属性”已修复

已拒绝访问以解析属性“大小”,因为它不是其父级的“自己的属性”

使用带有节点和快递的把手#each 时出错

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

为啥 user.username 在车把中不起作用