2016-11-25 42 views
3

此问题正在致命中。请帮忙。 我有以下文件结构:成功解决后,使用打字稿的量角器无法找到模块“量角器”

node_modules 
    protractor 
    typescript 
package.json 
register-popup.ts 

的package.json

{ 
    "name": "typescriptProba", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
     "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "keywords": [], 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
     "protractor": "^4.0.11", 
     "typescript": "^2.0.10" 
    } 
} 

寄存器popup.ts的内容的内容:

import { ElementFinder, element, by } from "protractor"; 

export class RegisterPopup { 
    public registerWithFacebookButton: ElementFinder = element(by.css('li.facebook a')); 
    public registerWithGoogleButton: ElementFinder = element(by.css('li.google a')); 
    public registerWithEmailButton: ElementFinder = element(by.css('li.email a')); 
    public registerWithMobileButton: ElementFinder = element(by.css('li.natel a')); 

    constructor() {} 

    openPopup() { 
     element(by.css('.account.user')).click(); 
     element(by.id('openRegister')).click(); 
    } 

    openRegisterByEmailPopup() { 
     this.registerWithEmailButton.click(); 
    } 

    openRegisterByPhonePopup() { 
     this.registerWithMobileButton.click(); 
    } 
} 

对于编译TS文件,JS文件我正在使用以下命令:

./node_modules/typescript/bin/tsc "./register-popup.ts" --module commonjs --noResolve --traceResolution 

执行命令后,我有以下错误:

error TS2307: Cannot find module 'protractor'. 

但我模块跟踪分辨率是这样的:

======== Resolving module 'protractor' from '/Users/predraglazarevic/www/typescriptProba/register-popup.ts'. ======== 
Module resolution kind is not specified, using 'NodeJs'. 
Loading module 'protractor' from 'node_modules' folder. 
File '/Users/predraglazarevic/www/typescriptProba/node_modules/protractor.ts' does not exist. 
File '/Users/predraglazarevic/www/typescriptProba/node_modules/protractor.tsx' does not exist. 
File '/Users/predraglazarevic/www/typescriptProba/node_modules/protractor.d.ts' does not exist. 
Found 'package.json' at '/Users/predraglazarevic/www/typescriptProba/node_modules/protractor/package.json'. 
'package.json' has 'typings' field 'built/index.d.ts' that references '/Users/predraglazarevic/www/typescriptProba/node_modules/protractor/built/index.d.ts'. 
File '/Users/predraglazarevic/www/typescriptProba/node_modules/protractor/built/index.d.ts' exist - use it as a name resolution result. 
Resolving real path for '/Users/predraglazarevic/www/typescriptProba/node_modules/protractor/built/index.d.ts', result '/Users/predraglazarevic/www/typescriptProba/node_modules/protractor/built/index.d.ts' 
======== Module name 'protractor' was successfully resolved to '/Users/predraglazarevic/www/typescriptProba/node_modules/protractor/built/index.d.ts'. ======== 

所以我

Module name 'protractor' was successfully resolved

,但仍然有错误

error TS2307: Cannot find module 'protractor'.

为什么?

ANSWER

当我忽略--noResolve标志它正在工作。所以,命令应该是

./node_modules/typescript/bin/tsc "./register-popup.ts" --module commonjs 
+0

你能分享你的'tsconfig'文件吗? –

+0

没有tsconfig文件 – kukipei

+0

我不明白你如何编译没有tsconfig文件? –

回答

1

首先,你需要检查你的tsconfig.json,你看到typeRoots

{ 
    "compileOnSave": false, 
    "compilerOptions": { 
    "declaration": false, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "lib": [ 
     "es2016" 
    ], 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "outDir": "path/to/transpiled/files", 
    "sourceMap": true, 
    "target": "es6", 
    "typeRoots": [ 
     "node_modules/@types" 
    ] 
    } 
} 

如果您有任何其他DefinitelyTyped模块,它们将由typeRoots目录回升当地路径:node_modules/@types

+0

更新上面的答案。 '@ types/protractor'已弃用。 – cnishina