Vue CLI 组件样式标签 NOT scoped not applied in Rails CSP 错误
Vue CLI component style tag NOT scoped not applied in Rails CSP error
我有一个使用 Vue 的 Rails 应用程序。当我尝试在 <style>
标签中添加内容时,它没有被应用。它在呈现的 HTML 中也不可见。我的依赖项中没有 css-loader,当我安装它时,整个应用程序无法运行。
我的index.html.erb
<%= stylesheet_pack_tag 'hello_vue' %>
<%= javascript_pack_tag 'hello_vue' %>
我的hello_vue.js
import Vue from 'vue'
import App from '../app.vue'
document.addEventListener('DOMContentLoaded', () => {
const app = new Vue({
render: h => h(App)
}).$mount()
document.body.appendChild(app.$el)
console.log(app)
})
我的app.vue
<template>
<div id="app">
</div>
</template>
<script>
export default {
}
</script>
<style>
#app{
background: aqua;
}
</style>
我的 package.json
使用 css-loader(不工作)
{
"name": "name-of-project",
"private": true,
"dependencies": {
"@rails/actioncable": "^6.0.0",
"@rails/activestorage": "^6.0.0",
"@rails/ujs": "^6.0.0",
"@rails/webpacker": "5.4.3",
"css-loader": "^6.3.0",
"leaflet": "^1.7.1",
"turbolinks": "^5.2.0",
"vue": "^2.6.14",
"vue-loader": "^15.9.8",
"vue-template-compiler": "^2.6.14",
"vue2-leaflet": "^2.7.1",
"webpack": "^4.46.0",
"webpack-cli": "^3.3.12"
},
"version": "0.1.0",
"devDependencies": {
"@vue-leaflet/vue-leaflet": "^0.6.1",
"webpack-dev-server": "^3"
}
}
(我删除了我的实际代码,但它一开始也不起作用)
当我在浏览器中使用 inspect 编辑样式时,它起作用了。此外,当我添加内联样式时,它会起作用,例如:
我用rails install:webpacker:vue
命令安装了vue。当我只创建一个vue项目时,它工作得很好,但是,这次使用vue它似乎没有工作,我不知道为什么。
编辑:
它与样式标签因 CSP 而被阻止加载这一事实有关。根据 Vue 的说法,这不应该发生,但它确实发生了,并且在网络上没有答案。
好吧,我的第一个答案被版主Jean-François Fabre删了,所以我就在这里简单回复一次,因为这个是的解决方案问题,是的,我确实在外部网站上添加了 link,但只是为了在到期时给予信用。
如果有人遇到同样的问题,我在 Medium post 上找到了解决方案。最重要的部分是 rails/webpacker.README.mb
的截图,我在当前 README.md 上找不到了。
我有一个使用 Vue 的 Rails 应用程序。当我尝试在 <style>
标签中添加内容时,它没有被应用。它在呈现的 HTML 中也不可见。我的依赖项中没有 css-loader,当我安装它时,整个应用程序无法运行。
我的index.html.erb
<%= stylesheet_pack_tag 'hello_vue' %>
<%= javascript_pack_tag 'hello_vue' %>
我的hello_vue.js
import Vue from 'vue'
import App from '../app.vue'
document.addEventListener('DOMContentLoaded', () => {
const app = new Vue({
render: h => h(App)
}).$mount()
document.body.appendChild(app.$el)
console.log(app)
})
我的app.vue
<template>
<div id="app">
</div>
</template>
<script>
export default {
}
</script>
<style>
#app{
background: aqua;
}
</style>
我的 package.json
使用 css-loader(不工作)
{
"name": "name-of-project",
"private": true,
"dependencies": {
"@rails/actioncable": "^6.0.0",
"@rails/activestorage": "^6.0.0",
"@rails/ujs": "^6.0.0",
"@rails/webpacker": "5.4.3",
"css-loader": "^6.3.0",
"leaflet": "^1.7.1",
"turbolinks": "^5.2.0",
"vue": "^2.6.14",
"vue-loader": "^15.9.8",
"vue-template-compiler": "^2.6.14",
"vue2-leaflet": "^2.7.1",
"webpack": "^4.46.0",
"webpack-cli": "^3.3.12"
},
"version": "0.1.0",
"devDependencies": {
"@vue-leaflet/vue-leaflet": "^0.6.1",
"webpack-dev-server": "^3"
}
}
(我删除了我的实际代码,但它一开始也不起作用)
当我在浏览器中使用 inspect 编辑样式时,它起作用了。此外,当我添加内联样式时,它会起作用,例如:
我用rails install:webpacker:vue
命令安装了vue。当我只创建一个vue项目时,它工作得很好,但是,这次使用vue它似乎没有工作,我不知道为什么。
编辑:
它与样式标签因 CSP 而被阻止加载这一事实有关。根据 Vue 的说法,这不应该发生,但它确实发生了,并且在网络上没有答案。
好吧,我的第一个答案被版主Jean-François Fabre删了,所以我就在这里简单回复一次,因为这个是的解决方案问题,是的,我确实在外部网站上添加了 link,但只是为了在到期时给予信用。
如果有人遇到同样的问题,我在 Medium post 上找到了解决方案。最重要的部分是 rails/webpacker.README.mb
的截图,我在当前 README.md 上找不到了。