Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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_Reactjs_Webpack_Ecmascript 6 - Fatal编程技术网

Javascript ES6&;网页包:导入不工作

Javascript ES6&;网页包:导入不工作,javascript,reactjs,webpack,ecmascript-6,Javascript,Reactjs,Webpack,Ecmascript 6,我目前正在学习ES6和Webpack,我有一组特殊的文件,import语句无法处理。问题是: Sagas.js import { deleteMe } from './DeleteMe'; import * as constants from '../Constants'; debugger; export const deleteMe = "Yep, it's loading"; console.log(deleteMe); DeleteMe.js import { deleteMe }

我目前正在学习ES6和Webpack,我有一组特殊的文件,
import
语句无法处理。问题是:

Sagas.js

import { deleteMe } from './DeleteMe';
import * as constants from '../Constants';

debugger;
export const deleteMe = "Yep, it's loading";
console.log(deleteMe);
DeleteMe.js

import { deleteMe } from './DeleteMe';
import * as constants from '../Constants';

debugger;
export const deleteMe = "Yep, it's loading";
console.log(deleteMe);
在上面的文件中,
deleteMe
无法从调试器(使用Chrome Inspector)访问<代码>常量为

和常量.js

export const SET_COMMENTS = 'SET_COMMENTS';
在调试器停止之前(在Chrome inspector中),控制台中会触发“Yep,it's loading”(是的,它正在加载),因此文件本身会通过

我试过:

  • import*作为deleteMeStuff from./DeleteMe
    导入,查看是否会填充
    deleteMeStuff
    。没有
  • 正在重新启动网页包开发服务器。没有骰子,编译时没有错误。在./DeleteMe中抛出
    调试器
    ,确认正在进行更改
  • constdeleteme=“是的,它正在工作”;导出默认的deleteMe
    &
    从“/deleteMe”导入deleteMe
    -->仍然没有任何乐趣
在调试器中,我刚刚注意到
\u DeleteMe
返回
{DeleteMe:“是的,正在加载”,\u esModule:true}


知道这里发生了什么吗?怎么解决?我完全糊涂了。在我的应用程序中,有大量其他导入文件在其他文件中成功运行。

您不能像这样在同一行中使用default和const

export default const deleteMe = "Yep, it's working"
你必须像这样打破它:

export const deleteMe = "Yep, it's loading";
export default deleteMe;
要导入它,您可以执行以下任一操作:

import deleteMe  from './DeleteMe';


FWIW,您的导出和导入都很好(假设Webpack没有文件扩展名也可以)。如果我直接在Chrome中执行此操作(现在它有模块支持),而不使用Webpack并添加文件扩展名,那么导入的
deleteMe
就会出现。我猜这是一个网页配置问题。
constdeleteme=“是的,正在加载”;导出{deleteMe}
然后
从'/deleteMe'导入{deleteMe}一个想法:Sagas.js中除了您所展示的内容之外还有什么其他内容吗?网页包可能会在树上晃动,并且看到您没有使用
deleteMe
,因此不必费心导入它。您所说的
deleteMe无法从调试器访问是什么意思?我假设代码是由babel传输的,因此常量名称可能会被更改为其他名称,或者甚至被一个表达式替换,以遵循ES2015模块行为
(0,_ModuleName.deleteMe)
@TJ树摇是一个很好的主意,但将console.log(deleteMe)放入
Sagas.js
中效果很好。但下一行的调试器仍然无法找到
deleteMe
@Yury承认我是ES6/Babel/Webpack新手-这听起来是可行的。在Chrome inspector中是否有追踪已更改常量名称的方法?此外,这些更改的名称不会显示在Chrome Inspector-->源中吗?(显示为
deleteMe
)感谢您的建议。第三个要点中列出的
default
参数只是一个试图追踪问题的实验,可以确认当
default
参数拆分为两行时,它仍然具有相同的行为。我已经编辑了上面的第三个要点来澄清。问题行为仍然存在。此答案的语法错误。首先,当您导入任何未使用
默认
关键字导出的内容时,必须包含
{}
。如果使用
默认
关键字导出,则可以不使用
{}
直接导入。此外,您不必执行
export const deleteMe=“是的,它正在加载”
然后
导出默认的deleteMe。定义了
const deleteMe
之后,可以在一个
export
关键字中导出它。没问题,你会得到它,因为你继续在JS领域!