当前位置: 首页 > 知识库问答 >
问题:

WebPack React模块解析失败

商昆琦
2023-03-14

继幸存的JS电子书我试图设置我的ReactJS项目webpack配置。

在运行我的开始脚本时,我得到以下错误:

./app/index.js模块解析失败时出错:/Users/shooste/PersonalProjects/surviveJS/node_modules/eslint loader/index.js/Users/shooshte/PersonalProjects/surviveJS/app/index.js意外标记(5:0)您可能需要适当的加载程序来处理此文件类型。|ReactDOM.render(| Hello world,|
document.getElementById('app')|);@多(网页包)-开发服务器/客户端?http://localhost:8080 webpack/hot/仅开发服务器babel polyfill./app

这是我的index.js:

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
<div>Hello world</div>,
  document.getElementById('app')
);

我的webpack配置:

const path = require('path');

const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HtmlWebpackTemplate = require('html-webpack-template');
const merge = require('webpack-merge');

const parts = require('./webpack.parts');

const PATHS = {
  app: path.join(__dirname, 'app'),
  build: path.join(__dirname, 'build')
};

const common = merge(
  {
    entry: {
      app: ['babel-polyfill', PATHS.app]
    },
    resolve: {
      extensions: ['.js', '.jsx']
    },
    output: {
      path: PATHS.build,
      filename: '[name].js'
    },
    plugins: [
      new HtmlWebpackPlugin({
        template: HtmlWebpackTemplate,
        title: 'ReactJS Boilerplate',
        appMountID: 'app',
        mobile: true,
        inject: false
      })
    ]
  },
  parts.loadFonts(PATHS.app),
  parts.loadImages(PATHS.app),
  parts.lintCSS(PATHS.app),
  parts.lintJavaScript(PATHS.app)
);

module.exports = function(env) {
  if(env === 'production') {
    return merge(
      common,
      {
        output: {
          chunkFilename: 'scripts/[chunkhash].js',
          filename: '[name].[chunkhash].js',
          // Tweak this to match your GitHub project name
          publicPath: '/surviveJS/'
        },
        plugins: [
          new webpack.HashedModuleIdsPlugin()
        ]
      },
      parts.setFreeVariable(
        'process.env.NODE_ENV',
        'production'
      ),
      parts.loadJavaScript(PATHS.app),
      parts.minifyJavaScript(PATHS.app),
      parts.extractBundles([
        {
          name: 'vendor',
          entries: ['react']
        },
        {
          name: 'manifest'
        }
      ]),
      parts.clean(PATHS.build),
      parts.generateSourcemaps('source-map'),
      parts.extractSASS(),
      parts.purifyCSS(PATHS.app)
    );
  }
  return merge(
    common,
    {
      performance: {
        hints: false
      },
      plugins: [
        new webpack.NamedModulesPlugin()
      ]
    },
    parts.generateSourcemaps('eval-source-map'),
    parts.loadSASS(),
    parts.devServer({
      host: process.env.HOST,
      port: process.env.PORT
    })
  );
};

零件模块的相关零件:

exports.devServer = function(options) {
  return {
    devServer: {
      historyApiFallback: true,
      hot: true,
      hotOnly: true,
      stats: 'errors-only',
      host: options.host, // Defaults to `localhost`
      port: options.port // Defaults to 8080
    },
    plugins: [
      new webpack.HotModuleReplacementPlugin({
      })
    ]
  };
};

exports.lintJavaScript = function(paths) {
  return {
    module: {
      rules: [
        {
          test: /\.js$/,
          include: paths,
          use: 'eslint-loader',
          enforce: 'pre'
        }
      ]
    }
  };
};

exports.loadJavaScript = function(paths) {
  return {
    module: {
      rules: [
        {
          test: /\.(js|jsx)$/,
          include: paths,

          loader: 'babel-loader',
          options: {
            cacheDirectory: true
          }
        }
      ]
    }
  };
};

这已经太大了,但我不知道我的网页配置的哪个部分失败了。如果您需要有关样板文件的更多信息,请查看gitHub repo。

共有1个答案

谢善
2023-03-14

发现问题,,

我只是在生产环境中加载javascript,而不是在任何地方。将loadJavascript移动到common修复了我的问题:

const path = require('path');

const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HtmlWebpackTemplate = require('html-webpack-template');
const merge = require('webpack-merge');

const parts = require('./webpack.parts');

const PATHS = {
  app: path.join(__dirname, 'app'),
  build: path.join(__dirname, 'build')
};

const common = merge(
  {
    entry: {
      app: ['babel-polyfill', PATHS.app]
    },
    resolve: {
      extensions: ['.js', '.jsx']
    },
    output: {
      path: PATHS.build,
      filename: '[name].js'
    },
    plugins: [
      new HtmlWebpackPlugin({
        template: HtmlWebpackTemplate,
        title: 'ReactJS Boilerplate',
        appMountID: 'app',
        mobile: true,
        inject: false
      })
    ]
  },
  parts.loadJavaScript(PATHS.app),
  parts.loadFonts(PATHS.app),
  parts.loadImages(PATHS.app),
  parts.lintCSS(PATHS.app),
  parts.lintJavaScript(PATHS.app)
);

module.exports = function(env) {
  if(env === 'production') {
    return merge(
      common,
      {
        output: {
          chunkFilename: 'scripts/[chunkhash].js',
          filename: '[name].[chunkhash].js',
          // Tweak this to match your GitHub project name
          publicPath: '/surviveJS/'
        },
        plugins: [
          new webpack.HashedModuleIdsPlugin()
        ]
      },
      parts.setFreeVariable(
        'process.env.NODE_ENV',
        'production'
      ),
      parts.minifyJavaScript(PATHS.app),
      parts.extractBundles([
        {
          name: 'vendor',
          entries: ['react']
        },
        {
          name: 'manifest'
        }
      ]),
      parts.clean(PATHS.build),
      parts.generateSourcemaps('source-map'),
      parts.extractSASS(),
      parts.purifyCSS(PATHS.app)
    );
  }
  return merge(
    common,
    {
      performance: {
        hints: false
      },
      plugins: [
        new webpack.NamedModulesPlugin()
      ]
    },
    parts.generateSourcemaps('eval-source-map'),
    parts.loadSASS(),
    parts.devServer({
      host: process.env.HOST,
      port: process.env.PORT
    })
  );
};
 类似资料:
  • 嗨,我是学生开发者。我面临这样的错误 ./src/index.js 5:16模块解析失败时出错:意外标记(5:16)您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件。看见https://webpack.js.org/concepts#loaders |从“../src/components/App”导入应用程序| ReactDOM.render(,document.get

  • 这节假设你已经了解了模块的一些基本知识 请阅读模块文档了解更多信息。 模块解析是指编译器在查找导入模块内容时所遵循的流程。 假设有一个导入语句import { a } from "moduleA"; 为了去检查任何对a的使用,编译器需要准确的知道它表示什么,并且需要检查它的定义moduleA。 这时候,编译器会有个疑问“moduleA的结构是怎样的?” 这听上去很简单,但moduleA可能在你写的

  • 模块解析失败:意外令牌Reactjs? ./src/index.js 6:4模块解析失败时出错:意外标记(6:4)您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件。看见https://webpack.js.org/concepts#loaders || ReactDOM.render( |document.getElementById('app')|); @multi./

  • 我从Windows转到MacOS,下载了其中一个项目,但我有一个无法修复的错误。我的其他同事也有macOS,但我是唯一一个有M1的人。 2021-09-08 23:20:07[记录][友好错误]2021-09-08 23:20:07[错误][友好错误]输入/页面/程序/网络挂钩/添加/索引。vue?vue /node_modules/vue loader/lib/index。js您可能需要额外的加

  • 本文向大家介绍Python struct模块解析,包括了Python struct模块解析的使用技巧和注意事项,需要的朋友参考一下 python提供了一个struct模块来提供转换。下面就介绍这个模块中的几个方法。     struct.pack(): struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,

  • 主要内容:1.概述,2. XPathParser,3. XMLMapperEntityResolver,4. GenericTokenParser,5. PropertyParser,6. TokenHandler1.概述 解析器模块,主要提供了两个功能: 一个功能,是对 XPath 进行封装,为 MyBatis 初始化时解析 mybatis-config.xml 配置文件以及映射配置文件提供支持。 另一个功能,是为处理动态 SQL 语句中的占位符提供支持。 源码对应 parsing 包。 2.