«Ошибка разбора модуля: неожиданный токен» при добавлении поля класса - PullRequest
0 голосов
/ 15 ноября 2018

Ниже кода TypeScript (это означает, что статические поля класса и другие функции TypeScript доступны) успешно построен с помощью Webpack:

export default class ConfigRepresentative {
  constructor() {
    console.log('ok');
  }
}

Сбои (то же самое, если удалить private и static):

export default class ConfigRepresentative {

  private static ownInstanceHasBeenCreated: boolean = false;

  constructor() {
    console.log('ok');
  }
}

Ошибка:

ERROR in ./TypeScriptSource/index.ts 7:10
Module parse failed: Unexpected token (7:10)
You may need an appropriate loader to handle this file type.
| export default class ConfigRepresentative {
| 
>   private static ownInstanceHasBeenCreated: boolean = false;
| 
|   constructor() {

webpack.config.js

module.exports = {

  entry: './TypeScriptSource/index.ts',
  output: {
    filename: 'index.js',
    path: __dirname,
    libraryTarget: 'umd'
  },

  target: 'node',
  mode: 'production',
  watch: true,

  module: {
    rules: [
      {
        test: /\.ts?$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }
    ]
  },
  resolve: {
    extensions: ['.ts', '.js']
  }
};

Чтобы сэкономить ваше время при воспроизведении этой проблемы, я прикрепил файлы souse. error.zip

1 Ответ

0 голосов
/ 15 ноября 2018

Это потому, что проект находился в папке node_modules. Параметр exclude: /node_modules/ отменяет правило {test: /\.ts?$/, use: 'ts-loader'}, но без кода свойства класса используется чистый JavaScript.

(Я знаю, что это плохая практика - разрабатывать что-то внутри node_modules, однако я не знаю другого решения для разработки зависимостей. В этом случае одиночный ConfigRepresentative бесполезен, если он не используется другими проект).

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