2016-10-20 8 views
2

Я пытаюсь шаг за шагом перенести проект Angular JavaScript (ES5) на TypeScript 2.0 и должен признать, что я очень борется.
Итак, сначала я изменил index.js на index.ts и использовал recommended method of installing typings (npm install --save @types/node) вместо старого типа typings.json.Отсутствующие типы TypScript с браузером + babelify + tsify

установка сборки использует gulp с browserify и теперь введения tsify и babelify как предложено here.

browserify

//... 
.plugin(tsify) 
.transform(babelify, { 
     presets: ['es2015'], 
     extensions: ['.ts', '.js'] 
}) 
//... 

tsconfig.json

{ 
"files": [ 
    "assets/app/index.ts" 
], 
"compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false 
} 
} 

Однако сборка завершается с:

TypeScript error: .tmp/public/app/index.ts(4,15): Error TS2304: Cannot find name 'require'.

tsify кажется не копировать Insta lled typings к выходному директорию, которая вызывает вышеупомянутую ошибку.
Любое предложение о том, как решить проблему?

EDIT
Копирование node_modules/@ типов папку в корне моего C: диск устраняет ошибку, но я понятия не имею, почему ...

ответ

1

В случае, если кто работает в то же самое проблема:

Эксклюзивно добавив опцию typesRoot в tsconfig.json исправлено.

"typeRoots" : ["./node_modules/@types"] 

Это «должно» быть по умолчанию, но по какой-то причине он ищет папку @types под C: корень диска.

От машинопись документы:

If typesRoots is specified, only packages under typeRoots will be included.

+0

Какую версию tsify вы используете? – cartant

+0

'' tsify ":"^2.0.2 "' – lenny

+0

Не могли бы вы создать [выпуск] (https://github.com/TypeStrong/tsify/issues) для этого? Это похоже на ошибку. Вам не нужно указывать 'typeRoots'. Не могли бы вы также включить в свою проблему больше своей конфигурации? Я не вижу, как в вашем сообщении об ошибке должен быть указан путь .tmp/public/...'. – cartant