Webpack / Typescript - спасение ModuleConcatenation: модуль не является модулем ECMAScript? - PullRequest
0 голосов
/ 05 марта 2019

Проект строится нормально, когда mode = "development", но не "production" - все "не модуль ECMAScript"

В режиме Production автоматически используется ModuleConcatenationPlugin, в разработке нет такого, который имеет смысл,но я не могу понять, почему ModuleConcatenation недоволен.

В документах Webpack сказано: «Имейте в виду, что этот плагин будет применяться только к модулям ES6, обрабатываемым непосредственно веб-пакетом. При использовании транспилятора вам понадобитсяотключить обработку модулей (например, параметр modules в Babel) "- я не смог найти способ сделать это для машинописного текста, кроме установки параметра компилятора" module "в" es6 "?

Anyприветствуются идеи и предложения о том, как отследить проблему - я уже потратил на это целый день: (

My tsconfig.json:

{
    "include": [
        "src/browser/**/*",
        "src/shared/typings/*"
    ],
    "exclude": [
        "node_modules"
    ],
    "compilerOptions": {
        "outDir": "./dist/public/",
        "sourceMap": true,
        "strict": true,
        "noImplicitReturns": true,
        "noImplicitAny": true,
        "module": "es6",
        "lib": [
            "es6",
            "dom"
        ],
        "moduleResolution": "node",
        "target": "es5",
        "allowJs": true,
        "resolveJsonModule": true,
        "jsx": "react",
        "allowSyntheticDefaultImports": true
    }
}

Файл webpack.config:

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

const config = {
  mode: "production",

  entry: './src/browser/index.tsx',
  output: {
    path: path.resolve(__dirname, 'dist', 'public'),
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.(ts|tsx)?$/,
        loader: 'awesome-typescript-loader',
        options: {
          useCache: false,
          configFileName: 'test.tsconfig.json'
        }
      },
      {
        test: /\.(png|jp(e*)g|svg)$/,
        use: 'file-loader'
      },
    ]
  },
  resolve: {
    extensions: [
      '.tsx',
      '.ts',
      '.js'
    ]
  }
}

module.exports = config;

1 Ответ

0 голосов
/ 05 марта 2019

ОК, так что я (в конце концов) понял это.

Что-то, что я считал предупреждением, помечалось как ошибка с помощью машинописи.

Это заставило NoEmitOnErrorsPlugin делать свое дело и не выводить

Поэтому ModuleConcatenationPlugin не имеет ничего общего, но выдает «... не модуль ECMAScript» ошибки - AKA aмассивная красная сельдь.

Итак, будущие гуглеры - убедитесь, что ModuleConcatenationPlugin действительно имеет модули для объединения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...