当前位置: 首页 > 知识库问答 >
问题:

Vue.js:生成渲染函数失败

万勇
2023-03-14

我尝试运行一个简单的Vue.js,但我经常收到以下错误:

[Vue警告]:您似乎在内容安全策略禁止不安全评估的环境中使用Vue.js的独立构建。模板编译器无法在此环境中工作。考虑放宽策略以允许不安全评估或将模板预编译为呈现函数

主要的js:3180[Vue warn]:未能生成呈现函数:EvalError:拒绝将字符串计算为JavaScript,因为“不安全的eval”不是以下内容安全策略指令中允许的脚本源:“默认src‘self’”。在里面

使用(this){返回_c('div',{attrs:{"id":"app"}})}

(发现于)

然而,我不明白是什么导致了这个错误。我似乎不使用任何动态模板,一切都应该预先编译。下面是我的应用程序的代码:

import Vue from 'vue'
import VueRouter from 'vue-router'

const Home = Vue.component('home-component', {
  render() {
    return <div>
      <router-link to="/users">Users</router-link>
      <router-link to="/about">About</router-link>
    </div>
  }
})

const Users = Vue.component('users-component', {
  render() {
    return <p>Users</p>
  }
})

const NotFound = Vue.component('not-found-component', {
  render() {
    return <p>Not Found</p>
  }
})

const routes = [
  { path: '/', component: Home },
  { path: '/users', component: Users }
]

const router = new VueRouter({
  routes
})

const app = new Vue({
  router
}).$mount('#app')

下面是我如何在gulpfile中处理JavaScript文件:

const paths = {
  main: 'web/javascript/src/main.js',
  allJs: 'web/javascript/**/*.{js,vue}',
  resultJs: 'public/assets/javascript/main.js',
};

gulp.task('scripts', function() {

  return browserify(paths.main)
    .transform(babelify, { presets: ['es2015'], plugins: ["transform-runtime"] })
    .transform(vueify)
    .bundle()
    .pipe(fs.createWriteStream(paths.resultJs))
}

在StackOverflow上似乎有很多类似的问题,但没有一个对我有帮助。

共有1个答案

丁雅惠
2023-03-14

浏览器正在引发内容安全策略 (CSP) 错误,若要解决此问题,应考虑切换到完全符合 CSP 的纯运行时生成。https://v2.vuejs.org/v2/guide/installation.html#CSP-environments

另外,您返回的书写不正确。它应该以对的副词 () 返回 jsx。下面的代码应该会有所帮助

import Vue from 'vue'
import VueRouter from 'vue-router'

const Home = Vue.component('home-component', {
  render(h) {
    return(
    <div>
      <router-link to="/users">Users</router-link>
      <router-link to="/about">About</router-link>
    </div>
    )
  }
})

const Users = Vue.component('users-component', {
  render(h) {
    return(
      <p>Users</p>
    )
  }
})

const NotFound = Vue.component('not-found-component', {
  render(h) {
    return(
      <p>Not Found</p>
    )
  }
})

const routes = [
  { path: '/', component: Home },
  { path: '/users', component: Users }
]

const router = new VueRouter({
  routes
})

const app = new Vue({
  router
}).$mount('#app')
 类似资料:
  • 1. 简介 本小节我们将介绍 Vue 渲染函数。包括什么是渲染函数、虚拟 DOM、如何编写渲染函数。渲染函数是一个难点,通常在一些简单的项目中不会使用,在处理一些复杂的业务场景时,使用渲染函数往往可以达到事半功倍的效果。 通过本小节的学习我们可以掌握渲染函数的基本用法,如果同学们学完本小节之后对此还不是特别熟悉也没有关系,我们可以先将基础知识融会贯通,然后再对该知识点多加练习,相信同学们一定可以熟

  • 本文向大家介绍Vue渲染函数详解,包括了Vue渲染函数详解的使用技巧和注意事项,需要的朋友参考一下 前面的话 Vue 推荐在绝大多数情况下使用 template 来创建HTML。然而在一些场景中,真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template 更接近编译器。本文将详细介绍Vue渲染函数 引入 下面是一个例子,如果要实现类似下面的效果。其中,H标

  • 渲染节点 精灵 文字 骨骼动画 蒙版节点 裁剪节点 帧动画 图集 纹理

  • 本文向大家介绍vue.js,ajax渲染页面的实例,包括了vue.js,ajax渲染页面的实例的使用技巧和注意事项,需要的朋友参考一下 关于上次说的用vue.js,zepto,node.js,webpack等技术重构CNode。这是一个比较入门的项目,一般你学完vue就可以上手了,CNode网站有公开的API所以你可以获取这个网站的所有数据接口,然后渲染到页面上,用CSS等加工一下就可以了。起初,

  • 注意 本指南需要最低为如下版本的 Vue,以及以下 library 支持: vue & vue-server-renderer 2.3.0+ vue-router 2.5.0+ vue-loader 12.0.0+ & vue-style-loader 3.0.0+ 如果先前已经使用过 Vue 2.2 的服务器端渲染 (SSR),你应该注意到,推荐的代码结构现在略有不同(使用新的 runInNew