我一直在寻找解决问题的方法,但找不到为什么我的css没有加载。 我有一个简单的Angluar 2应用程序,需要组件中的html和css。 webpack正在进行捆绑并创建html和js文件的bundle.js。但是,它不会在bundle中加载css文件。它不是我的实际css,而是:
function(module, exports) {
module.exports = "// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!./../../node_modules/css-loader/index.js!./print.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!./../../node_modules/style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!./../../node_modules/css-loader/index.js!./print.css\", function() {\n\t\t\tvar newContent = require(\"!!./../../node_modules/css-loader/index.js!./print.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}"/***/ }
这里是我正在使用的webpack.config文件的css部分:
{
test: /\.css$/,
loader: 'raw'
},
{
test: /\.css$/,
loader: 'style!css'
},
{
test:/\.gif|png/, loader: "file-loader"
},
{
test: /\.html$/,
loader: 'raw'
}
resolve: {
extensions: ['', '.ts', '.js', '.json','.css', '.html']
}
在我的组件中我只需要html和css文件。
@Component({
selector: 'my-app',
styles: [require('./my.css')],
template: require('./my.html')
})
bundle.js中的文本就像加载器找不到css文件一样,但它们与我加载的html文件处于相同的相对路径。
有人知道可能是什么问题吗?
感谢任何建议,我会因尝试不同的事情而感到茫然。
答案 0 :(得分:0)
所以我发现了一个问题,解决了我的问题,至少其中一个问题。 我需要在我的serverd文件夹下排除css,如:
{
test: /\.css$/,
loader: 'style!css,
exclude: /app/
}
所以这种方式,那些css不会被styler和loader选中,因为我认为,angular需要一个文本列表作为CSS。 所以这解决了我的问题。
但我仍然有一个问题,我有一个黑客,但我不喜欢它。 在更改我的应用程序以使用webpack作为捆绑包之前,我使用的是npm和system.js(如angular.io网站上所述)。所以我在index.html中有一个全局的css,它完成了我的应用程序的整体样式。但是改成webpack之后显然无法像以前那样引用index.html中的全局样式。为了使全局样式在我的所有应用程序上工作,我将ViewEncapsulation模式更改为None(封装:ViewEncapsulation.None)。这有效,但我不喜欢它,它似乎不对,我害怕在路上咬我。
有人知道如何为所有应用程序要求我的全局css吗? 我找到了一种方法,但由于某种原因不起作用。 我尝试过ExtractTextPlugin,但无法让它工作。
{
test: /\.css$/,
loader: ExtractTextPlugin.extract('style-loader', 'css-loader'),
exclude: /app/
}
并添加到我的插件中:
plugins: [
new ExtractTextPlugin("./glob.css")
]
任何想法我做错了什么?
由于