Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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
Javascript 为什么这个JS函数不能正确导入到my blade.php?_Javascript_Php_Html_Laravel_Import - Fatal编程技术网

Javascript 为什么这个JS函数不能正确导入到my blade.php?

Javascript 为什么这个JS函数不能正确导入到my blade.php?,javascript,php,html,laravel,import,Javascript,Php,Html,Laravel,Import,我有一个JavaScript文件“submittedForms.js”,我在blade.php中引用了它 弹出刀片服务器抛出的以下错误 未捕获引用错误:未定义functionTest 在blade.php中,我这样调用functionTest functionTest() 这里的问题是因为您正在使用module.export,它用于在js文件之间导入/需要文件,这可以大大扩展,但为了解决这个问题,我将保持简单 我可以想象,您当前在控制台中收到如下警告: 未捕获引用错误:未定义模块 除非你有 要

我有一个JavaScript文件“submittedForms.js”,我在blade.php中引用了它

弹出刀片服务器抛出的以下错误

未捕获引用错误:未定义functionTest

在blade.php中,我这样调用functionTest

functionTest()

这里的问题是因为您正在使用module.export,它用于在js文件之间导入/需要文件,这可以大大扩展,但为了解决这个问题,我将保持简单

我可以想象,您当前在控制台中收到如下警告:

未捕获引用错误:未定义模块 除非你有

要使functionTest在浏览器中可用,可以将其定义为:

function functionTest() {
    console.log('this works');
}
将其附加到父作用域,在本例中,父作用域将是窗口。也可以通过以下方式将其显式附加到窗口对象:

如果您想使用较新的ES模块进行导入/导出,这是可能的,但是,在编写本文时,支持不会那么好。 要实现此目的,应将module.exports更改为导出默认值:

然后,在刀片文件中,您可以将其导入属性为type=module的脚本标记中:


导入JS文件的正确方法应该如下所示。希望这能奏效

<script src="{{ asset('js/bundle/charts/submittedForms.js')}}"></script>

为什么在laravel代码中使用module.exports?第二个代码段来自JS文件submittedForms.JS您是否也将/需要submittedForms导入到另一个JS文件中?是否可以包含调用此函数的代码?module.exports必须是key:value对,如果您希望使用此导出创建另一个模块,您还需要在当前导出文件中导入该模块。最重要的是,这些功能需要用babel或webpack moduler编译才能在浏览器中运行。所以。。。如果我有一个子JS文件submittedForms.JS并定义了所有函数和变量,然后用module.exports将它们从子JS中导出,然后将其导入到一个父JS文件aggregator.JS中,会怎么样。然后我将aggregator.js链接到blade.php?这是关于MDN的文章,@thirdghostand我已经更新了我的答案,展示了如何使用es模块实现这一点。
function functionTest() {
    console.log('this works');
}
window.functionTest = function () {
    console.log('this works');
}
export default {
    functionTest() {
        console.log('this works');
    },
    submittedForms
};
<script type="module"> //notice the 

    import submittedForms from "/js/bundle/charts/submittedForms.js";

    submittedForms.functionTest();

</script>
<script src="{{ asset('js/bundle/charts/submittedForms.js')}}"></script>