Symfony Webpack Encore 和 FontAwesome 的编译错误
Compilation error with Symfony Webpack Encore and FontAwesome
我目前正在使用 Bootstrap 和 FontAwesome Pro 编写 Symfony 3.4 应用程序。我有以下自定义 .scss 文件:
$theme-colors: (
"burnt-orange": #fa7334,
"light-blue": #67e2f5,
"dark-blue": #006f80,
"beige": #f5d5bc
);
@import "~bootstrap/scss/bootstrap";
@import "~@fortawesome/fontawesome-pro";
我的/project_root/app/Resources/js/app.js
:
import '../scss/custom.scss';
import $ from 'jquery';
global.$ = global.jQuery = $;
window.Popper = require('popper.js');
require('bootstrap');
我的webpack.config.js
:
var Encore = require('@symfony/webpack-encore');
Encore
.setOutputPath('web/build/')
.setPublicPath('/build')
.enableVersioning()
.addEntry('app', './app/Resources/assets/js/app.js')
.enableSassLoader()
.autoProvidejQuery()
.enableSourceMaps(!Encore.isProduction())
.cleanupOutputBeforeBuild()
;
module.exports = Encore.getWebpackConfig();
以及我的 package.json
中的相关脚本:
"scripts": {
"dev": "encore dev --watch"
}
当我尝试 运行 $ npm run dev
时,出现以下错误:
webpack is watching the files…
ERROR Failed to compile with 1 errors
10:01:31 PM
error in ./app/Resources/assets/scss/custom.scss
Module build failed (from
./node_modules/mini-css-extract-plugin/dist/loader.js):
ModuleBuildError: Module build failed (from
./node_modules/sass-loader/lib/loader.js):
(function () { ^
Invalid CSS after " */": expected selector, was "(function () {"
in /home/kevin/www/diva/node_modules/@fortawesome/fontawesome-pro/js/fontawesome.js
(line 5, column 1)
at runLoaders (/home/kevin/www/diva/node_modules/webpack/lib/NormalModule.js:286:20)
at /home/kevin/www/diva/node_modules/loader-runner/lib/LoaderRunner.js:364:11
at /home/kevin/www/diva/node_modules/loader-runner/lib/LoaderRunner.js:230:18
at context.callback (/home/kevin/www/diva/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
at Object.render [as callback] (/home/kevin/www/diva/node_modules/sass-loader/lib/loader.js:52:13)
at Object.done [as callback] (/home/kevin/www/diva/node_modules/neo-async/async.js:8077:18)
at options.error (/home/kevin/www/diva/node_modules/node-sass/lib/index.js:294:32)
@ ./app/Resources/assets/js/app.js 1:0-29
显然,错误与我尝试包含 FontAwesome 的方式有关,但我是节点、Bootstrap 和 FontAwesome 的新手,所以我不太确定如何继续。我什至需要导入 FontAwesome 吗? Their docs 说简单地引用模块的 css/all.css
,但由于相同的文档说将 FontAwesome 模块保存为开发依赖项,我不确定当我告诉 Webpack Encore 编译时它是否可用生产。
将我的 custom.scss
文件更改为此(注意最后一行)解决了问题:
$theme-colors: (
"burnt-orange": #fa7334,
"light-blue": #67e2f5,
"dark-blue": #006f80,
"beige": #f5d5bc
);
@import "~bootstrap/scss/bootstrap";
@import "~@fortawesome/fontawesome-pro/css/all.css";
我目前正在使用 Bootstrap 和 FontAwesome Pro 编写 Symfony 3.4 应用程序。我有以下自定义 .scss 文件:
$theme-colors: (
"burnt-orange": #fa7334,
"light-blue": #67e2f5,
"dark-blue": #006f80,
"beige": #f5d5bc
);
@import "~bootstrap/scss/bootstrap";
@import "~@fortawesome/fontawesome-pro";
我的/project_root/app/Resources/js/app.js
:
import '../scss/custom.scss';
import $ from 'jquery';
global.$ = global.jQuery = $;
window.Popper = require('popper.js');
require('bootstrap');
我的webpack.config.js
:
var Encore = require('@symfony/webpack-encore');
Encore
.setOutputPath('web/build/')
.setPublicPath('/build')
.enableVersioning()
.addEntry('app', './app/Resources/assets/js/app.js')
.enableSassLoader()
.autoProvidejQuery()
.enableSourceMaps(!Encore.isProduction())
.cleanupOutputBeforeBuild()
;
module.exports = Encore.getWebpackConfig();
以及我的 package.json
中的相关脚本:
"scripts": {
"dev": "encore dev --watch"
}
当我尝试 运行 $ npm run dev
时,出现以下错误:
webpack is watching the files…
ERROR Failed to compile with 1 errors
10:01:31 PMerror in ./app/Resources/assets/scss/custom.scss
Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js): ModuleBuildError: Module build failed (from ./node_modules/sass-loader/lib/loader.js):
(function () { ^ Invalid CSS after " */": expected selector, was "(function () {" in /home/kevin/www/diva/node_modules/@fortawesome/fontawesome-pro/js/fontawesome.js (line 5, column 1) at runLoaders (/home/kevin/www/diva/node_modules/webpack/lib/NormalModule.js:286:20) at /home/kevin/www/diva/node_modules/loader-runner/lib/LoaderRunner.js:364:11 at /home/kevin/www/diva/node_modules/loader-runner/lib/LoaderRunner.js:230:18 at context.callback (/home/kevin/www/diva/node_modules/loader-runner/lib/LoaderRunner.js:111:13) at Object.render [as callback] (/home/kevin/www/diva/node_modules/sass-loader/lib/loader.js:52:13) at Object.done [as callback] (/home/kevin/www/diva/node_modules/neo-async/async.js:8077:18) at options.error (/home/kevin/www/diva/node_modules/node-sass/lib/index.js:294:32)
@ ./app/Resources/assets/js/app.js 1:0-29
显然,错误与我尝试包含 FontAwesome 的方式有关,但我是节点、Bootstrap 和 FontAwesome 的新手,所以我不太确定如何继续。我什至需要导入 FontAwesome 吗? Their docs 说简单地引用模块的 css/all.css
,但由于相同的文档说将 FontAwesome 模块保存为开发依赖项,我不确定当我告诉 Webpack Encore 编译时它是否可用生产。
将我的 custom.scss
文件更改为此(注意最后一行)解决了问题:
$theme-colors: (
"burnt-orange": #fa7334,
"light-blue": #67e2f5,
"dark-blue": #006f80,
"beige": #f5d5bc
);
@import "~bootstrap/scss/bootstrap";
@import "~@fortawesome/fontawesome-pro/css/all.css";