javascript - 为什么某些未指定扩展名的 webpack/Babel ES6 导入会解析为 "undefined?"

标签 javascript typescript webpack ecmascript-6 babeljs

我尝试的一些 ES6 文件(.js、.jsx.ts.tsx)使用语法 import ComponentName from './folder/ComponentName'; (无扩展名)解析为 undefined,尽管没有触发 Webpack 或 Typescript 错误并且在我时正确解析添加文件扩展名。其他文件解析良好,无论有或没有扩展名。这是为什么?

虽然 React 组件通常会发生这种情况,但无论导入文件的内容如何,​​也无论是否有默认导出,它都可能发生。

最佳答案

这是因为这些文件在同一目录中具有相同名称但不同扩展名(例如“.less”)的邻居。例如,我会将 ComponentName.tsxComponentName.less 放在同一文件夹中。

两个可能的修复:

  1. 在 Webpack 配置 resolves 部分中,将 JS/ES6/TypeScript 扩展移至 .less/.css 扩展前面,例如从 ['.less', '.tsx', ...]['.tsx', '.less', ...]。这样,JavaScript 文件首先解析。
  2. 更好的是,不要将同名的文件保留在同一目录中。

关于javascript - 为什么某些未指定扩展名的 webpack/Babel ES6 导入会解析为 "undefined?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42171305/

相关文章:

javascript - 如何使用花式框/灯箱单击提交按钮来获取 div 弹出窗口?

javascript - 链接到 CSS 文件的 URL 错误

javascript - d3 无法读取未定义的属性 'classed'

angular - 错误 : No NgModule metadata found for 'AppModule'

javascript - 如何让 Karma + Webpack 找到模块?

javascript - 如何更快地在索引中加载内联源

Angular 2 rc4无法通过在地址栏输入url来访问页面

javascript - Angularjs Bootstrap Accordion 示例

node.js - 新的 package.json `exports` 字段不适用于 TypeScript

angular - 配置 Observable 以在推送新值时将所有先前值作为数组返回?