javascript - Webpack解析扩展名 "Module not found"

标签 javascript node.js reactjs webpack

警告:我对 webpack 还很陌生,请保持温柔

好吧,我正在尝试设置 webpack,并且我在 es2015 上一切正常,并使用 webpack 导入。我遇到了一个问题,现在我尝试将扩展名添加到 resolve 中,这样我就不必声明文件扩展名,但它总是说找不到文件或模块。知道为什么会这样吗?这是我的 index.jsx 和我的 webpack.config.js

// index.jsx
import * as React from 'react'
import * as ReactDOM from 'react-dom'
import { Provider } from 'react-redux'

import App from './components/App'
import configureStore from './store/configureStore.js'

const store = configureStore()

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('app')
)

这是webpack.config:

// webpack.config
var path = require('path')
var webpack = require('webpack')

module.exports = {
    devtool: 'eval',
    entry: [
        'webpack-dev-server/client?http://localhost:3000',
        'webpack/hot/only-dev-server',
        './src/javascripts/index.jsx'
    ],
    output: {
        path: path.join(__dirname, '/dist'),
        filename: 'bundle.js',
        publicPath: '/public/'
    },

    plugins: [
        new webpack.HotModuleReplacementPlugin(),
    new webpack.DefinePlugin({
      __DEV__: process.env.NODE_ENV !== 'production'
    })
    ],

    module: {
        loaders: [
            {
                test: /\.jsx?$/,
                loaders: [ 'react-hot', 'babel-loader' ],
        include: path.join(__dirname, '/src')
            },
      {
        test: /\.scss$/,
        loader: [ 'style', 'css', 'sass' ]
      },
      {
        test: /\.json$/,
        loader: 'json'
      }
        ],

        preLoaders: [
            { test: /\.js$/, loader: 'source-map-loader' }
        ],

    resolve: {
      root: [
        path.resolve(path.join(__dirname, 'src', 'stylesheets')),
        path.resolve(path.join(__dirname, 'src', 'javascripts'))
      ],
      alias: {
        '@style': path.resolve(path.join(__dirname, 'src', 'stylesheets')),
        '@script': path.resolve(path.join(__dirname, 'src', 'javascripts'))
      },
      extensions: [
        '',
        '.webpack.js',
        '.web.js',
        '.jsx',
        '.js',
        '.scss'
      ]
    }
    }
};

正如我所说,如果我将 index.jsx 中的第 5 行从 import App from './components/App' 更改为 import App from './components/App.jsx',它有效,我不知道为什么。有什么想法吗?

最佳答案

您的模块正在包裹您的resolve,这会破坏配置文件。如果 resolve 不存在,则 Webpack 无法解析您的扩展,从而迫使您添加扩展。您应该始终统一缩进以跟踪并防止这些类型的错误。


当您在没有扩展的情况下导入它时,Webpack 不知道如何解析扩展,因此无法正确加载它。您必须指定 .jsx,然后 Babel 就会进来并将其显式导入为 .jsx

关于javascript - Webpack解析扩展名 "Module not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39323207/

相关文章:

javascript - 使用播放列表参数嵌入youtube视频

javascript - 使用 jQuery 专注于输入

javascript - 如何使用 XML 将 HTMLCollection 对象转换为字符串?

javascript - 重定向到 ReactJS 中的结帐

reactjs - 为什么 getDerivedStateFromProps 在 setState 之后调用?

javascript - 更改回调函数中的类变量

node.js - 无法将 Angular 应用程序部署到openshift: “Argument error, options.body.”

node.js - 如何优化 socket io 性能?

node.js - NodeJS 像 PHP 一样人性化多维数组(键字符串)

html - 纯 HTML 中的彩色 SVG 在 React 中全黑。为什么?