Смущает синтаксис "импорта" машинописного текста с параметрами компилятора: Module, esnext vs common js? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть проект машинописного текста с некоторыми тестами мокко, которые начинаются так:

import { assert } from "chai";
import "@material/mwc-ripple"; //I want to test a script that uses this

describe("simple test", () => {
    it("works", () => {
    assert.isOk(true)
  });
});

В мокко tsconfig.test.json, если я установил "module": "esnext", я получаю следующую ошибку:

/home/ec2-user/environment/frontend/test-mocha/common/datetime/aaa_aaa_test.ts:1
import { assert } from "chai";
       ^

SyntaxError: Unexpected token {
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    ...

Но если я установлю его на "module": "commonjs", я получаю эту ошибку:

/home/ec2-user/environment/frontend/node_modules/@material/mwc-ripple/mwc-ripple.js:1
import { __decorate } from "tslib";
       ^

SyntaxError: Unexpected token {
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    ...

Что происходит и как мне это исправить?

1 Ответ

0 голосов
/ 08 мая 2020

Ага, кажется, я нашел виновника!

Если я изменю

import "@material/mwc-ripple";

на

import { Ripple } from "@material/mwc-ripple";

, ошибка будет устранена. Я предполагаю, что различные подсказки синтаксиса импорта для ts-node, что импортированный файл должен быть проанализирован как javascript или машинописный текст. Может быть?

...