Ответ 1
Кажется, эта проблема была исправлена для меня, обновив ее до Typescript 2.3.x
Кроме того, использование Visual Studio 2017 также значительно улучшилось. Я настоятельно рекомендую вам сделать оба этих обновлений.
В моем проекте Typescript 2.2.1 в Visual Studio 2015 Update 3 я получаю сотни ошибок в списке ошибок, например:
Невозможно записать файл 'C:/{{my-project}}/ node_modules/buffer-shims/index.js', потому что он перезапишет входной файл.
Кажется, это все время. Это фактически не препятствует построению, и все работает отлично, но список ошибок отвлекает и трудно найти "реальные" ошибки, когда они происходят.
Вот мой 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"]
}
Как я могу избавиться от всех этих ошибок?
Кажется, эта проблема была исправлена для меня, обновив ее до Typescript 2.3.x
Кроме того, использование Visual Studio 2017 также значительно улучшилось. Я настоятельно рекомендую вам сделать оба этих обновлений.
У меня такая же проблема. В моем случае это было результатом опции: allowJs: true
.
Так что я просто должен был удалить эту строку, чтобы избавиться от ошибок. Я не вижу его в вашем коде, но, возможно, вам это помогает.
Удачи!
В моем экземпляре я использовал параметр 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!
]
}
Добавление 'dist' в исключенные каталоги в tsconfig.json сработало для меня:
{
"exclude": ["node_modules", "dist"]
}
Установить OutDir.
"outDir": "./",
Этот намек заключается в том, что если вы не установите outDir, то вывод будет размещен непосредственно рядом с входным файлом. После allowJs файл JavaScript также будет скомпилирован. Затем скомпилированный файл JavaScript перезапишет ваш исходный файл. Это просто напоминает тебе об этом.
Добавление "outDir": "./dist" к compilerOptions в tsconfig.json сработало для меня, когда я получил эту ошибку. Я уверен, что это только расширение Visual Studio Code TypeScript, выводящее эту ошибку. Я использую ts-загрузчик с Webpack, а не компилятор tsc напрямую, поэтому мне не пришлось указывать outDir, потому что это контролирует конфиг webpack, но если это делает расширение VS Code счастливым, то это хорошо.
Есть несколько возможных причин этого.
outDir
значение "dist" или имя другой папки того же уровня. (префикс "./" не нужен). Это где файлы сборки идут.allowJs
значение false или удалите строку. Примечание: включено, allowJs будет конфликтовать с настройкой/флагом объявления. Это не включено по умолчанию.exclude
.main
на "index" или другое выбранное имя. Не добавляйте префикс к папке сборки (например, "dist/index") и к ненужным "./".types
(современный псевдоним typings
) в "index". Добавлять расширения (.d.ts или .js) не нужно.Хотя вы можете использовать его миллионами разных способов, для простоты и развития понимания лучше всего сначала придерживаться общепринятых методов - например, использовать "dist", простые файлы tsconfig.json и package.json на одном уровне дерева., и так далее. Конечно, рутирование через файлы ваших node_modules также углубит ваше понимание, но в жизни есть более полезные вещи.
У меня тоже была эта проблема. В моем случае я восстановил исходную версию файла \tools\JsEngine\typescriptServices.js
и это решило проблему.
Я обнаружил, что typescriptServices.js был изменен Visual Studio из-за конца строки (CRLF or CR)
, и после этого VS
не может правильно его запустить.
Я решил это, удалив "declaration": true
из моего файла tsconfig.json. Хотя сейчас у меня больше нет объявлений, так что это не помогло.
Вероятно, причиной проблемы являются 2 файла, генерирующие один и тот же модуль. Поэтому, если в одной папке два файла с одинаковыми именами, но с разными расширениями, это приводит к этой ошибке.
например:
\index.ts
\index.tsx
Решение заключается в изменении одного из этих файлов на другое.
В моем случае из-за разработки библиотеки и приложения одновременно...
Перемещение файла, который имеет импорт из библиотеки, из приложения в библиотеку привел к тому, что файл, находящийся сейчас в библиотеке, будет импортировать материал из своей собственной папки dist.
Забавно, что... на самом деле это рефакторинг в лучшем виде... он сохранил правильную ссылку на файл :)
Я была такая же проблема. В моем случае это было вызвано тем, что у меня было два файла с одинаковым именем в одном модуле: index.ts index.tsx.
Я переименовал один из них, и проблема была исправлена.
Я столкнулся с этой проблемой из-за автозаполнения VSCode файла в папке dist/
.
import { SomeClass } from '../../dist/xxx/someclass'
Чтобы решить проблему, просто исправьте импорт:
import { SomeClass } from './someclass'