SyntaxError: Неожиданный импорт токена - Node.js - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь разделить код моего приложения с помощью веб-пакета, но веб-пакет не создает фрагменты для моего динамического импорта.Я нашел один источник здесь: https://davidea.st/articles/webpack-typescript-code-split-wont-work, который сказал, что мне нужно изменить свойство моего модуля в моем файле tsconfig с «commonjs» на «esnext», чтобы компилятор машинописного текста не уменьшал мои динамические операторы импорта до Promises, в результате чегоWebpack не знает, что они являются динамическим импортом, и, следовательно, не создает динамические фрагменты.Я следовал за этим и во время компиляции я вижу, что куски сейчас создаются!Whoooo!Однако компилятор выдает ошибку с ошибкой в ​​заголовке моего вопроса при попытке разрешить операторы импорта в моем приложении Express, поскольку импорт ES не сводится к тому, что узел больше не понимает.Кто-нибудь знает, возможно ли это достичь?Я хочу использовать операторы импорта ES в узле, но без свойства модуля в моем файле tsconfig, установленного на "commonjs".Я действительно не хочу реорганизовывать все операторы импорта в commonJS require.

tsconfig.json:

{
    "compilerOptions": {
        "target": "es6",
        "module": "esnext",
        "allowJs": true,
        "sourceMap": false,
        "inlineSourceMap": true,
        "strict": true,
        "strictNullChecks": true,
        "noImplicitAny": true,
        "noImplicitReturns": true,
        "noEmitOnError": true,
        "removeComments": false,
        "forceConsistentCasingInFileNames": true,
        "suppressImplicitAnyIndexErrors": false,
        "jsx": "react",
        "watch": false,
        "moduleResolution": "node"
}}

версия узла: v8.11.3

Я использую ts-node в своем скрипте npm для выполнения кода моего сервера:

"start": "webpack && ts-node - ./src/service/index.ts --env = prod"

Мой .babelrc выглядит следующим образом:

{
    "presets": [
    "react",
    "stage-3",
    [
      "env",
      {
        "modules": false
      }
    ]
  ],
  "plugins": [
    "react-hot-loader/babel",
    "syntax-dynamic-import"
  ]
}

1 Ответ

0 голосов
/ 03 октября 2018

По умолчанию ts-node использует параметры компилятора в файле tsconfig.json в рабочем каталоге;Вы можете указать другой файл tsconfig.json с параметром --project.Файл tsconfig.json, который вы используете с ts-node, должен иметь module, установленный на commonjs (или опущен, в этом случае ts-node по умолчанию равен commonjs), чтобы компиляция на лету генерироваласьмодули, которые могут понять Node.Вам может понадобиться использовать отдельные tsconfig.json файлы для кода сервера, который вы запускаете с ts-node, и кода клиента, который вы упаковываете с помощью Webpack.

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