Javascript ES6&;网页包:导入不工作
我目前正在学习ES6和Webpack,我有一组特殊的文件,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 }
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领域!