Компиляция машинописного веб-работника работает из командной строки, но не из gulp - PullRequest
0 голосов
/ 24 января 2020

У меня есть веб-работник, написанный на машинописи. Он прекрасно компилируется из командной строки. Однако, когда я пытаюсь скомпилировать его в Gulp, я получаю странные ошибки типов:

/.../node_modules/@types/hls.js/index.d.ts(357,17): error TS2304: Cannot find name 'SourceBuffer'.
/.../node_modules/@types/hls.js/index.d.ts(1716,27): error TS2304: Cannot find name 'AudioTrack'.
... (more like that)

Я понятия не имею, откуда берутся эти типы; однако я предполагаю, что это как-то связано с node_modules/@types в родительском каталоге (где работает gulpfile.js), но я не знаю, почему компилятор машинописи ищет там. (Надеемся) соответствующие части моего gulpfile:

const ts = require('gulp-typescript');
const tsWorkerProject = ts.createProject('src/app/workers/tsconfig.json');
// stuff...
const compileWorkers = (done) => {
  return tsWorkerProject.src()
    .pipe(tsWorkerProject())
    .js.pipe(gulp.dest(paths.dist))
    .on('error', err => {
      console.error(err.toString());
      done(err);
    });
}; 
// more stuff...

У меня есть tsconfig.json внутри рабочего каталога:

{
  "compilerOptions": {
    "lib": ["webworker", "ScriptHost", "ES2018"],
    "importHelpers": true,
    "target": "es5",
    "jsx": "react",
    "sourceMap": true,
    "inlineSources": true,
    "diagnostics": true,
  },
  "files": ["./*.ts"],
}

1 Ответ

0 голосов
/ 29 января 2020

Ответ, как выясняется, должен включать пустой массив types в compilerOptions. Моя рабочая tsconfig.json выглядит так:

{
  "compilerOptions": {
    "lib": ["webworker", "scripthost", "ES2015"],
    "importHelpers": true,
    "target": "es2015",
    "jsx": "react",
    "sourceMap": true,
    "inlineSources": true,
    "diagnostics": true,
    "types": [],
  },
  "files": ["./*.ts"],
}
...