it-swarm.com.ru

Ошибка машинописного текста "Невозможно записать файл ... потому что он перезапишет входной файл."

В моем проекте TypeScript 2.2.1 в Visual Studio 2015 Update 3 я получаю сотни ошибок в списке ошибок, таких как:

Невозможно записать файл 'C:/{{my-project}}/node_modules/buffer-shims/index.js', поскольку он перезапишет входной файл.

Это выглядит так все время. На самом деле это не мешает сборке, и все работает просто отлично, но список ошибок отвлекает и трудно обнаружить «настоящие» ошибки, когда они возникают.

 visual studio error list

Вот мой файл tsconfig.json

{
  "compileOnSave": true,
  "compilerOptions": {
    "baseUrl": ".",
    "module": "commonjs",
    "noImplicitAny": true,
    "removeComments": true,
    "sourceMap": true,
    "target": "ES5",
    "forceConsistentCasingInFileNames": true,
    "strictNullChecks": true,
    "allowUnreachableCode": false,
    "allowUnusedLabels": false,
    "noFallthroughCasesInSwitch": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,

    "typeRoots": [],
    "types": [] //Explicitly specify an empty array so that the TS2 @types modules are not acquired since we aren't ready for them yet.
  },
  "exclude": ["node_modules"]
}

Как я могу избавиться от всех этих ошибок?

19
Chris Barr

Кажется, эта проблема была исправлена ​​для меня путем обновления до TypeScript 2.3.x 

Кроме того, использование Visual Studio 2017 также стало большим улучшением. Я настоятельно рекомендую вам сделать оба из этих обновлений.

1
Chris Barr

У меня та же проблема. В моем случае это был результат опции: allowJs: true

Поэтому мне пришлось удалить эту строку, чтобы избавиться от ошибок .. Я не вижу ее в вашем коде, но, возможно, она вам здесь поможет.

Удачи!

18
Donniewiko

В моем случае я использовал параметр outFile , но не исключал каталог назначения из входных данных.

// Bad
{
    "compileOnSave": true,
    "compilerOptions": {
        "outDir": "./built",
        "allowJs": true,
        "target": "es5",
        "allowUnreachableCode": false,
        "noImplicitReturns": true,
        "noImplicitAny": true,
        "typeRoots": [ "./typings" ],
        "outFile": "./built/combined.js"
    },
    "include": [
        "./**/*"
    ],
    "exclude": [
        "./plugins/**/*",
        "./typings/**/*"
    ]
}

Все, что нам нужно сделать, это исключить вкусности в outDir :

// Good
{
    "compileOnSave": true,
    "compilerOptions": {
        "outDir": "./built",
        "allowJs": true,
        "target": "es5",
        "allowUnreachableCode": false,
        "noImplicitReturns": true,
        "noImplicitAny": true,
        "typeRoots": [ "./typings" ],
        "outFile": "./built/combined.js"
    },
    "include": [
        "./**/*"
    ],
    "exclude": [
        "./plugins/**/*",
        "./typings/**/*",
        "./built/**/*" // This is what fixed it!
    ]
}
14
Vince Horst

Добавление «outDir»: «./dist» к compilerOptions в tsconfig.json сработало для меня, когда я получил эту ошибку. Я уверен, что это только расширение Visual Studio Code TypeScript, выводящее эту ошибку. Я использую ts-загрузчик с Webpack, а не компилятор tsc напрямую, поэтому мне не пришлось указывать outDir, потому что конфигурация webpack контролирует это, но если это делает расширение VS Code счастливым, это хорошо.

2
Eric Pitcher

Установить OutDir.

"outDir": "./",

этот намек заключается в том, что если вы не установите outDir, то выходные данные будут размещены непосредственно рядом с входным файлом. После allowJs файл JavaScript также будет скомпилирован. Затем скомпилированный файл JavaScript перезапишет ваш исходный файл. Это просто напоминает тебе об этом.

1
ChenCong Shi

У меня тоже была эта проблема. В моем случае я восстановил исходную версию файла \tools\JsEngine\typescriptServices.js, и это решило. 

Я обнаружил, что typescriptServices.js был изменен Visual Studio из-за конца строки (CRLF or CR), и после этого VS не может запустить его правильно.

0
Nguyen Duc Tien

Я решил это, удалив "declaration": true из моего файла tsconfig.json. Хотя сейчас у меня больше нет объявлений, так что это не помогло.

0
AskYous

Вероятно, причиной проблемы являются 2 файла, генерирующие один и тот же модуль. Поэтому, если в одной папке два файла с одинаковыми именами, но с разными расширениями, это приводит к этой ошибке.

например: 

\index.ts
\index.tsx

Решение заключается в изменении одного из этих файлов на другое.

0
mkb