Webpack/React.js:您可能需要一个额外的加载器来处理这些加载器的结果

Sea*_*ysa 4 typescript webpack

./productFlow/index.tsx 3:12 中的错误 模块解析失败:意外的标记 (3:12) 文件是使用这些加载器处理的: * ./node_modules/awesome-typescript-loader/dist/entry.js 您可能需要额外的加载器来处理这些加载器的结果。| 从“反应”导入反应;| 导出默认道具 => { return ( | <p>Compiled Successfully</p>| );

当它遇到 JSX 代码(在 .tsx 文件中)时,它似乎会失败。at-loader 无法处理这个问题吗?我四处寻找反应加载器,但我看到的例子更接近我自己的:

const webpack = require("webpack");
const dotEnvWebpack = require("dotenv-webpack");
const path = require("path");

const webpackConfiguration = {
  entry : {
    productFlow : path.join(__dirname, "productFlow/index.tsx")
    , registrationFlow : path.join(__dirname, 'registrationFlow/index.tsx')
  }
  , output : {
    filename : "outputFiles/[name].output.js"
    , path : path.resolve(__dirname, "")
    , publicPath : '/'
  }
  , watch : true
  , watchOptions : { aggregateTimeout : 300 }
  , devtool : 'inline-source-map'
  , mode : "development"
  , devServer : {
    port: 3000
    , contentBase : path.join(__dirname, "devIndex.html")
    , hot : true
    , historyApiFallback : true
  }
  , plugins : [
    new webpack.HotModuleReplacementPlugin(),
    new dotEnvWebpack
  ]
  , node : {
    fs: "empty" // for dotenv to work correctly
  }
  , resolve : { extensions : ['.ts', '.tsx', '.js'] }
  , module : {
      rules : [{
        test : /\.tsx?$/
        , use : 'awesome-typescript-loader'
        , exclude : [/node_modules/, /outputFiles/]
      }]
  }
  , externals : {
      'react' : 'React'
      , 'react-dom' : 'ReactDOM'
  }
};

module.exports = webpackConfiguration;

Run Code Online (Sandbox Code Playgroud)

Sea*_*ysa 7

这不是 webpack 的问题,而是 tsconfig 放松的问题。将此行添加到 tsconfig.json 后,加载程序识别了 JSX:

  "jsx": "react",
Run Code Online (Sandbox Code Playgroud)