#javascript #node.js #webpack #babeljs #ractivejs
#javascript #node.js #webpack #babeljs #ractivejs
Вопрос:
У меня есть проект, использующий ractivejs с webpack. Я добавил ractive-loader, который можно найти здесьhttps://www.npmjs.com/package/ractive-loader
Когда я пытаюсь собрать проект с помощью npm run build:dev, я получаю следующее сообщение об ошибке в шаблоне:
`ERROR in ./src/Templates/Feed/Main.html 1:2
Module parse failed: Unexpected character '#' (1:2)
You may need an appropriate loader to handle this file type.
> {{#Feeds}}
| {{title}}
| {{/Feeds}}`
Шаблон: Main.html
`{{#Feeds}}
<h1>{{title}}</h1>
{{/Feeds}}`
Мой веб-пакет выглядит следующим образом:
webpack.config
`const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const {
prod_Path,
src_Path
} = require('./path');
const {
selectedPreprocessor
} = require('./loader');
module.exports = {
entry: {
main: './' src_Path '/main.js'
},
output: {
path: path.resolve(__dirname, prod_Path),
filename: '[name].[chunkhash].js'
},
devtool: 'source-map',
devServer: {
open: true,
},
module: {
rules: [{
test: /.html$/,
use: {
loader: 'ractive-loader'
},
test: selectedPreprocessor.fileRegexp,
use: [{
loader: MiniCssExtractPlugin.loader,
},
{
loader: 'css-loader',
options: {
modules: false,
sourceMap: true
}
},
{
loader: 'postcss-loader',
options: {
sourceMap: true
}
},
{
loader: selectedPreprocessor.loaderName,
options: {
sourceMap: true
},
}
]
}]
},
plugins: [
new MiniCssExtractPlugin({
filename: 'style.css',
}),
new HtmlWebpackPlugin({
inject: false,
hash: false,
template: './' src_Path '/index.html',
filename: 'index.html'
})
],
resolve: {
alias: {
pubsub: 'aurelia-event-aggregator',
Ractive: 'ractive'
}
}
};`
Package.json
`{
"name": "project",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"build:dev": "webpack-dev-server --env dev --mode none",
"build:prod": "webpack --env prod --mode production",
"build:watch": "webpack-dev-server --env dev --mode none"
},
"author": "mwieth",
"license": "ISC",
"devDependencies": {
"autoprefixer": "^8.6.0",
"babel-core": "^6.26.3",
"babel-loader": "^7.1.4",
"babel-preset-env": "^1.7.0",
"clean-webpack-plugin": "^0.1.19",
"css-loader": "^0.28.11",
"html-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "^0.4.0",
"node-sass": "^4.11.0",
"postcss-loader": "^2.1.5",
"sass-loader": "^7.0.2",
"style-loader": "^0.21.0",
"webpack": "^4.10.2",
"webpack-cli": "^3.0.1",
"webpack-dev-server": "^3.1.14",
"webpack-md5-hash": "0.0.6",
"ractive": "^1.3.2",
"ractive-animatecss": "^0.1.0",
"ractive-datetime": "^1.0.0",
"ractive-loader": "^0.5.6",
"ractive-markdown": "^0.1.1",
"ractive-route": "github:martinkolarik/ractive-route",
"aurelia-event-aggregator": "^1.0.2",
"axios": "^0.18.0"
},
"dependencies": {
"acorn": "^6.1.1",
"normalize.css": "^8.0.1"
}
}`
Комментарии:
1.
#Feeds
Правильный синтаксис?2. @spencer.sm в шаблоне? ДА
3. Просто нужно заставить загрузчик работать. Я уверен, что синтаксис правильный.
Ответ №1:
просматривая документы здесь https://github.com/rstacruz/ractive-loader
синтаксис для добавления ractive-loader — это просто ‘ractive’ вместо ‘ractive-loader’
use: {
test: /.html$/,
loader: 'ractive'
}
хотя кажется, что они делают это немного по-другому, если вы точно следуете их примеру
module: {
loaders: [
{ test: /.html$/, loader: 'ractive' }
]
}
Комментарии:
1. Я уже пробовал использовать только ‘ractive’, и появляется та же ошибка. Я думаю, что синтаксис в webpack 4 немного отличается. Я получил это сообщение об ошибке после копирования упомянутого вами синтаксиса: «Недопустимый объект конфигурации. Webpack был инициализирован с использованием объекта конфигурации, который не соответствует схеме API.»