javascript - 找不到模块 : Error: Cannot resolve module 'components/app' . webpack + reactjs 问题

标签 javascript node.js reactjs webpack babeljs

我是 webpack 的新手并且有反应。希望你能帮助我。

我遇到了一个问题,但在互联网上找不到任何可行的解决方案。 当我尝试运行 webpack-dev-server 时,我一直收到“找不到模块:错误:无法解析模块‘components/app’”错误。

这是我的文件结构。

root/webpack.config.js

var webpack = require('webpack');
var path = require('path');

module.exports = {
    devtool: 'inline-source-map',
    entry: [
        'webpack-dev-server/client?http://127.0.0.1:8080/',
        'webpack/hot/only-dev-server',
        './src'
    ],
    output: {
        path: path.join(__dirname, 'public'),
        filename: 'bundle.js'
    },
    resolve: {
        moduleDirectories: ['node_modules', 'src'],
        extensions: ['', '.js']
    },
    module: {
        loaders: [{
            test: /\.js$/,
            loader: 'babel-loader',
            exclude: /node_modules/,
         query: {
             presets: ['es2015', 'react']
         }
        }]
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin()
    ]
};

根/.babelrc

{
    presets: ["react", "es2015"],
    plugins: ["react-hot-loader/babel"]
}

根目录/src/index.js

import React from 'react';
import { render } from 'react-dom';
import App from 'components/app';

render(<App />, document.getElementById('app'));

根目录/src/components/app.js

import React from 'react';

export default class App extends React.component {
    render() {
        return (
            <div>
                <h1>Hello There</h1>
            </div>
        );
    }
}

最佳答案

我同意 Robert Moskal 的回答,使用相对路径导入,同时如果你真的想要绝对路径工作,你可能需要在你的 webpack 中再添加一行.config.js 在它的解析部分中添加以下行

root: path.resolve('./src'),

这将有助于解析根目录,您可以使用绝对路径从 src 文件夹内的文件夹轻松导入。我会在下面向您展示我的示例 webpack.config.js

'use strict';

const path = require('path');
const loaders = require('./webpack/loaders');
const plugins = require('./webpack/plugins');

const applicationEntries = process.env.NODE_ENV === 'development'
  ? ['webpack-hot-middleware/client?reload=true']
  : [];

const mainEntry = process.env.NODE_ENV === 'development'
  ? './src/sample/index.tsx'
  : './src/lib/index.tsx';

module.exports = {
  entry: [mainEntry].concat(applicationEntries),

  output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].js',
    publicPath: '/',
    sourceMapFilename: '[name].js.map',
    chunkFilename: '[id].chunk.js',
  },

  devtool: process.env.NODE_ENV === 'production' ?
    'source-map' :
    'inline-source-map',

  resolve: {
    root: path.resolve('./src'),
    extensions: [
      '',
      '.webpack.js',
      '.web.js',
      '.tsx',
      '.ts',
      '.js',
      '.json',
    ],
  },

  plugins: plugins,

  devServer: {
    historyApiFallback: { index: '/' },
  },

  module: {
    preLoaders: [
      loaders.tslint,
    ],
    loaders: [
      loaders.tsx,
      loaders.html,
      loaders.css,
      loaders.scss,
      loaders.eot,
      loaders.svg,
      loaders.ttf,
      loaders.woff,
      loaders.json,
      {
        test: /\.png$/,
        loader: 'url-loader',
        query: { mimetype: 'image/png' },
      },
    ],
  },

  externals: {
    'react/lib/ReactContext': 'window',
    'react/lib/ExecutionEnvironment': true,
    'react/addons': true,
  },

};

关于javascript - 找不到模块 : Error: Cannot resolve module 'components/app' . webpack + reactjs 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40193374/

相关文章:

javascript - 带单选按钮的简单 JS 计算器

javascript - 具有用户角色的 React 应用程序

javascript - 更漂亮,更喜欢单行对象作为参数,从而产生单行函数

javascript - NginX 代理 Nodejs/Express - 静态文件上的 404

node.js - 使用回调的 Express.js 执行流程

javascript - 从 ReactJS 应用程序解析 JSON

javascript - 如何隐藏视频中出现的 YouTube 播放按钮?

javascript - 如何在node.js中循环请求

reactjs - 在 redux 中使用带有智能/dumb组件的选择器

javascript - 如何从 React 原生 FormData 对象获取数据