Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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 当使用ES6导入语句时,是否有方法防止未定义的项?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 当使用ES6导入语句时,是否有方法防止未定义的项?

Javascript 当使用ES6导入语句时,是否有方法防止未定义的项?,javascript,ecmascript-6,Javascript,Ecmascript 6,在使用新的ES6风格的import语句时,我经常犯的一个愚蠢的错误是,在对象分解过程中,我会在其中一个键中输入错误。我想不出有哪一个实例我希望分解赋值中的值是未定义的。如果我尝试导入的某个项未定义,是否有任何方法可以强制导入语句快速失败 即: 导入{ DoesNTESTINMODule//EXPLODE NOW!规范中的模块内容非常粗糙,但我相信在这种情况下,真正的实现会抛出一个语法错误。由于没有合法的实现,我不知道您是否正在谈论一种同时在传输代码中实现它的方法,或者您是否意识到这是一种情况nd

在使用新的ES6风格的import语句时,我经常犯的一个愚蠢的错误是,在对象分解过程中,我会在其中一个键中输入错误。我想不出有哪一个实例我希望分解赋值中的值是
未定义的
。如果我尝试导入的某个项未定义,是否有任何方法可以强制导入语句快速失败

即:

导入{

DoesNTESTINMODule//EXPLODE NOW!规范中的模块内容非常粗糙,但我相信在这种情况下,真正的实现会抛出一个
语法错误。由于没有合法的实现,我不知道您是否正在谈论一种同时在传输代码中实现它的方法,或者您是否意识到这是一种情况nd会很高兴知道它最终会以这种方式工作。之前有人谈论过尝试在Babel中实现这种检查,但据我所知,实际上没有做过任何事情。Babel单独编译每个模块

此外,这不是对象分解,它只是具有类似的语法

  • 没有钩子允许模块在其依赖项加载之前运行某些代码。这意味着模块无法控制如何加载
    将加载它们的依赖项
  • 导入错误没有错误恢复。一个应用程序中可能有数百个模块,如果加载或链接失败, 什么都不运行。您不能在try/catch块中导入。(此处为上边) 是因为系统是静态的,webpack可以检测到这些吗 编译时的错误。)

要了解更多详细信息,我认为唯一的方法是使用复杂的linter。请检查类似的ESlint插件。或者编写自己的Babel插件,将导入包装在附加检查中,如果未定义,则抛出错误。
import {
  foobar1,
  foobar2,
  foobor3,  //typo!  this key doesn't exist in the module.

} from './module_file.js'


console.log(foobar1, foobar2, foobar3)  //EXPLODES