Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Webpack的Handlebar返回Javascript代码,而不是呈现HTML_Javascript_Jquery_Laravel_Webpack_Handlebars.js - Fatal编程技术网

带有Webpack的Handlebar返回Javascript代码,而不是呈现HTML

带有Webpack的Handlebar返回Javascript代码,而不是呈现HTML,javascript,jquery,laravel,webpack,handlebars.js,Javascript,Jquery,Laravel,Webpack,Handlebars.js,我有一个基本的Laravel项目,一个todo应用程序,我正在使用Laravel Elixir来编译我的资产,我正在使用Webpack的Handlebar loader来编译我的资产 这是我的gulpfile.js: const elixir = require('laravel-elixir'); elixir((mix) => { mix.webpack('app.js', null, null, require('./webpack.config.js')); });

我有一个基本的Laravel项目,一个todo应用程序,我正在使用Laravel Elixir来编译我的资产,我正在使用Webpack的
Handlebar loader
来编译我的资产

这是我的gulpfile.js:

const elixir = require('laravel-elixir');


elixir((mix) => {
    mix.webpack('app.js', null, null, require('./webpack.config.js'));
});
我需要webpack.config.js,因为我想加载
把手加载程序

这是我的webpack.config.js:

module.exports = {
    module: {
        loaders: [
            { test: /\.handlebars$/, loader: "handlebars-loader" }
        ]
    },
};
为了简化这个问题,我将把所有代码放在app.js中:

'use strict';

var _token = $('meta[name="csrf-token"]').attr('content');

var renderErrorsTemplate = require('./../templates/errors.handlebars');
var renderTasksTemplate  = require('./../templates/task.handlebars');

$('#taskForm').submit(function(event) {
    var form = $(this);    
    var request = $.ajax({
        type: form.attr('method'),
        url: form.attr('action'),
        data: form.serialize()
    });
    request.done(function(response) { 
        renderTasks(response);
    });
    request.fail(function(response) {
        renderErrors(response.responseText);
    });
    event.preventDefault();
});


function renderTasks(response) {
    var response = {task: response, token: _token};
    $('#tasks').append(renderTasksTemplate(response));
    console.log(renderTasksTemplate);
}

function renderErrors(response) {
    $('#errors').html(renderErrorsTemplate(JSON.parse(response)))
    console.log(renderErrorsTemplate(response));
}   
我正在使用
require('template.js')
来要求所需的模板,而不使用Laravel Elixir,它可以在另一个普通应用程序上工作,而不使用任何框架,但如果我在终端中运行
gulp
,它将编译下来,因此稍后当我使用click events触发函数时,它只是返回一些Javascript代码,而不是实际运行该Javascript代码并呈现模板

这就是它的回报:

var Handlebars = require("/home/akar/Code/laravel-app/node_modules/handlebars/runtime.js"); function __default(obj) { return obj && (obj.__esModule ? obj["default"] : obj); } module.exports = (Handlebars["default"] || Handlebars).template({"1":function(container,depth0,helpers,partials,data) { return "
" + container.escapeExpression(container.lambda((depth0 != null ? depth0["0"] : depth0), depth0)) + "
\n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1; return "
\n
\n" + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},depth0,{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "
\n
"; },"useData":true});
而不是此模板的已处理版本:

<div class="alert alert-danger">
    <ul>
        {{#each this}}   
            <li>{{ this.[0] }}</li>
       {{/each}}
    </ul>

    {{{#每个这个}
  • {{this.[0]}
  • {{/每个}}

因此,最后我将我的gulpfile.js更改为:

const elixir = require('laravel-elixir');


elixir((mix) => {
    mix.sass('app.scss')
       .webpack('app.js');
});
显然,如果您只运行
mix.webpack
,它会自动检查目录中的任何
webpack.config.js
,然后从那里读取配置

我将webpack.config.js文件更改为:

var webpack = require('webpack');

module.exports = {
    devtool: 'source-map',
    module: {   
        loaders: [
            { test: /\.js$/, loader: 'buble' },
            { test: /\.handlebars$/, loader: "handlebars-loader" }
        ]
    },
    watch: true,
};
我还移除了
node\u模块
,并再次安装了
npm

希望这能帮助到别人,我不知道到底是什么导致了这场混乱,但我还是修复了它