在Laravel项目中调用未定义的函数asset()

时间:2018-06-16 07:37:27

标签: javascript php laravel

我正在尝试将welcome.blade.php文件加载到<script type="text/javascript" src="{{ asset('public/js/app.js') }}"></script>内,但我收到以下错误:

  

调用未定义的函数asset()

这是我使用的指令asset()

可能是什么问题?我还尝试在没有$ curl -v -XPOST https://api.airtable.com/v0/restoftheurl \ -H "Authorization: Bearer My_API_Key" \ -H "Content-type: application/json" \ -d '{ "fields": { "Item": "Headphone", "Quantity": "1", "Customer_ID": [ "My_API_Key" ] } }' 的情况下运行相同的行,但它不起作用。我的.js文件位于我指定的位置。

非常感谢你!

3 个答案:

答案 0 :(得分:1)

过程:

我正在使用Laravel 5.5,最近又遇到了相同的问题,所以我做了一些调试。步骤如下:

  1. 由于错误是Call to undefined function asset(),因此我在Laravel存储库中检查了helpers.php,以查看是否存在。 https://github.com/laravel/framework/blob/5.5/src/Illuminate/Foundation/helpers.php#L127,确实如此。

    if (! function_exists('asset')) {
        /**
         * Generate an asset path for the application.
         *
         * @param  string  $path
         * @param  bool    $secure
         * @return string
         */
        function asset($path, $secure = null)
        {
            return app('url')->asset($path, $secure);
        }
    }
    
  2. 我查看了我的Laravel本地副本,看看是否存在同一行。

  3. 但是,我的本地副本与仓库中的副本不同。它是这样的:

    if (! function_exists('asset')) {
        /**
         * Generate an asset path for the application.
         *
         * @param  string  $path
         * @param  bool    $secure
         * @return string
         */
        function mixasset($path, $secure = null)
        {
            return app('url')->asset($path, $secure);
        }
    }
    
  4. 在某些时候,Laravel Mix似乎已将asset()更改为mixasset()


结果:

尝试使用mixasset()而不是asset()。否则,请删除您的vendors文件夹并通过运行composer install来重建它。这应该为您提供使用正确的asset()帮助程序方法的Laravel版本的最新副本。

答案 1 :(得分:0)

asset()已指向您的公开文件夹,因此请勿在{{1​​}}中指定公开信息 将您的asset()更改为asset('public/js/app.js')

答案 2 :(得分:0)

我的错误:当我将Laravel 5.2中的某些函数移至Laravel 6.x时,调用未定义的函数set_active()...。 我的解决方案: 1.在下面的composer.json中添加 “自动加载”:{ “类图”:[ “数据库” ], “ psr-4”:{ “ App \”:“ app /” }, “文件”:[ “ app / helpers.php”。 =>新增 ] } 2.运行作曲家安装 它对我有用。