【问题标题】:Vue.js: Failed to generate render functionVue.js:无法生成渲染函数
【发布时间】:2018-01-30 16:53:45
【问题描述】:

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

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

main.js:3180 [Vue 警告]:无法生成渲染函数: EvalError:拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是以下允许的脚本来源 内容安全策略指令:“default-src 'self'”。在

with(this){return _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 上似乎有很多类似的问题,但没有一个对我有帮助。

【问题讨论】:

    标签: gulp vue.js browserify jsx


    【解决方案1】:

    浏览器抛出内容安全策略 (CSP) 错误,要解决此问题,您应该考虑切换到完全符合 CSP 的仅运行时构建。 https://vuejs.org/v2/guide/installation.html#CSP-environments

    另外,你写错了return。它应该在一对括号 () 中返回 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')
    

    【讨论】:

    • 按照您的建议,我添加了括号,但没有帮助。我仍然看到同样的错误。
    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 2021-05-19
    • 1970-01-01
    • 2017-09-24
    • 2019-07-02
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多