首页 > 解决方案 > 功能未定义

问题描述

这是我的代码:

// And my javascript file verbatims.js :
class Verbatims {
    
      list() {
        return ["c'est super", "j'aime pas", "ça marche bien"];
      }
    }
    
    module.exports = Verbatims;
<!DOCTYPE html>
<html lang="fr">

	<head>
        <meta charset="utf-8">
        <meta content="X-Content-Type-Options: nosniff">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">        
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.18/vue.min.js"></script>
        <script src="/src/verbatims.js" type="application/javascript"></script>
        
		<title>My Project</title>
	</head>

	<body>
        <div id="PRISME_data">
            Le nombre de requête est de  : {{ nb_request }}<br>
            <button v-on:click="change">Change value</button>
            <button v-on:click="stop">Arrêter</button>
        </div>

        <script>
            let app = new Vue({
                el:'#PRISME_data',
                data: {
                    nb_request: "toto",
                    ite: 0
                },
                methods: {
                    change: function() {
                        changeNbRequest()
                    },
                    stop: function() {
                        clearInterval()
                    }
                }
            });

            changeNbRequest = function() {
                var timer = setInterval(function() {
                    let verbatim = new Verbatims().list()[ite];
                }, 5000);
            }
        </script>
	</body>
</html>

当我尝试使用节点服务器显示我的页面时,出现此错误:

未捕获的 ReferenceError:逐字未在索引处定义:45

在这条线上:let verbatim = new Verbatims().list()[ite];

我不明白为什么,我尝试了很多东西,但没有任何效果!你有什么主意吗 ?

谢谢 :)

标签: javascripthtmlnode.jsvue.js

解决方案


这可能是由于以下原因而发生的:

  • 由于路径错误,verbatims.js 文件未在浏览器中加载。
  • 到达浏览器的 verbatims.js 文件不包含您的类。
  • 您没有在引用脚本上导入 Verbatims 类。

第三个选项的修复应该是这样的:

 <script type="module">
  import {Verbatims} from './src/vebatim.js';

   ....ommitted for brevity

  changeNbRequest = function() {
            var timer = setInterval(function() {
                let verbatim = new Verbatims().list()[ite];
            }, 5000);
  }
 </script>

附加提示

要改进您的代码,请尝试将 index.html 中的所有 JS 代码放到外部文件中,以便您可以利用 ES6 导入/导出功能。


推荐阅读