javascript - Webpack 无法正确解析我的别名

标签 javascript node.js reactjs ecmascript-6 webpack

我正在尝试为我的应用创建一个命名空间以作为模块工作,并使用此命名空间导入我的组件并限制相对路径的使用。

尽管如此,尽管我在这里遵循了 alias 的 webpack 文档:http://webpack.github.io/docs/configuration.html#resolve-alias 我无法正常工作。

这是我的解析对象的样子:

resolve: {
  root: path.resolve(__dirname),
  alias: {
    myApp: './src',
  },
  extensions: ['', '.js', '.json', '.jsx']
}

path.resolve(__dirname) 解析 /Users/Alex/Workspace/MyAppName/ui/

我以这种方式在文件 /Users/Alex/Workspace/MyAppName/ui/src/components/Header/index.jsx 中导入我的文件:

import { myMethod } from 'myApp/utils/myUtils';

我在构建过程中遇到以下错误:

ERROR in ./src/components/Header/index.jsx
Module not found: Error: Cannot resolve module 'myApp/utils/myUtils' in /Users/Alex/Workspace/MyAppName/ui/src/components/Header
 @ ./src/components/Header/index.jsx 33:19-56

我也试过 modulesDirectories 但它也不起作用。

你知道哪里出了问题吗?

最佳答案

将别名解析为绝对路径应该可以解决问题:

resolve: {
  alias: {
    myApp: path.resolve(__dirname, 'src'),
  },
  extensions: ['', '.js', '.jsx']
}

检查这个webpack resolve alias gist举个简单的例子。

另一种限制相对路径数量的解决方案是将 ./src 文件夹添加为 root而不是给它取别名:

resolve: {
  root: [path.resolve('./src')],
  extensions: ['', '.js', '.jsx']
}

然后您将能够像在模块所在的位置一样请求 ./src 中的所有文件夹。例如,假设您具有以下目录结构:

.
├── node_modules
├── src
│   ├── components
│   └── utils

您可以像这样从 componentsutils 导入:

import Header from 'components/Header';
import { myMethod } from 'utils/myUtils';

比如为 ./src 中的每个文件夹设置一个别名。

关于javascript - Webpack 无法正确解析我的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36365550/

相关文章:

javascript - 为什么在 nodejs REPL 中运行 function Array(){} 会破坏 nodejs

reactjs - 在 useEffect 中使用 useRef 当前的问题

javascript - 将键盘事件添加到 Openlayers map

javascript - 如何使用 Javascript 代码通过按钮在两个图像之间切换?

javascript - 将 HTML 数据导出到 excel

xml - 使用 node.js 验证 XML 语法/结构

javascript - 我在哪里定义要开始的实例 ID?

reactjs - 我什么时候应该在 Material-UI 中使用 Lists vs Menus?

javascript - Webpack:导出到窗口中的现有模块

javascript - 是否可以刷新控制台(使其立即打印)?