Ответ 1
Ошибка Нуба (которую я только что сделал). Пытаться:
npm install tslib
или же
npm i
Лично перед git clean -fxd
в пятницу я сделал git clean -fxd
, но не npm i
поэтому все npm-пакеты отсутствовали. Doh!
У меня есть демонстрационный проект, который я собираюсь скомпилировать для ES5 с включенными модулями tslib
и tslib
используемыми для внешних помощников TS:
package.json
{
"name": "foo",
"scripts": {
"build": "tsc"
},
"dependencies": {
"tslib": "^1.9.3"
},
"devDependencies": {
"typescript": "^3.1.3"
}
}
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "es2015",
"outDir": "./lib",
"rootDir": "./src",
"importHelpers": true,
"strict": true,
"experimentalDecorators": true
}
}
SRC/index.ts
function a(target: any) {
return target;
}
@a
export class Foo {}
Это приводит к ошибке:
src/index.ts: 5: 1 - ошибка TS2354: для этого синтаксиса требуется импортированный помощник, но модуль tslib не может быть найден.
Хотя lib/index.js
правильно скомпилирован:
import * as tslib_1 from "tslib";
function a(target) {
return target;
}
var Foo = /** @class */ (function () {
function Foo() {
}
Foo = tslib_1.__decorate([
a
], Foo);
return Foo;
}());
export { Foo };
Как решить эту проблему?
Ошибка Нуба (которую я только что сделал). Пытаться:
npm install tslib
или же
npm i
Лично перед git clean -fxd
в пятницу я сделал git clean -fxd
, но не npm i
поэтому все npm-пакеты отсутствовали. Doh!
Только что обновил tslib до последней версии, и проблема была исправлена. Я установил 1.9.3
и обновил до 1.10.0
.
В качестве опорных состояний разрешение модуля устанавливается в режим узла только для "modules": "commonjs"
и устанавливается в классический режим для "modules": "es2015"
:
Существуют две возможные стратегии разрешения модулей: Node и Classic. Вы можете использовать флаг --moduleResolution, чтобы указать стратегию разрешения модуля. Если не указано, по умолчанию используется значение Classic для --module AMD | Система | ES2015 или узел в противном случае
Поскольку классический режим не знает о node_modules
, компилятор не может разрешить модуль tslib
.
moduleResolution
должен быть установлен явно для модулей ES2015:
...
"module": "es2015",
"moduleResolution": "node",
...
Я получаю эту ошибку. Это усугублялось, когда я устанавливал Angular Material.
Поэтому я обновил CLI и Core до последних версий и все еще получил ошибку.
Но я понял проблему, так как новый CLI "ng new projectname" добавляет дубликаты узлов:
"module": "esnext",
"moduleResolution": "node",
в tsconfig.json
Удалил дубликаты и установил Angular Material 8.0.1 без ошибок.
Добавьте эту строку ниже в ваш файл .csproj внутри <PropertyGroup>
:
<TypeScriptCompileBlocked>True</TypeScriptCompileBlocked>
обновите зависимости и devDependencies tslib в package.json
{
dependencies:{
"tslib": "1.10.0",
},
devDependencies:{
"tslib": "1.10.0",
}
}