成功解析后,带有打字稿的量角器找不到模块"量角器



这个问题正在杀死我。请帮忙。我有以下文件结构:

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'. ========

所以我有

模块名称"量角器"已成功解决

但仍然有错误

错误ts2307:找不到模块'protractor'。

为什么?

答案

当我省略-Noresolve标志时,它正在工作。所以命令应为

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

我必须将 moduleresolution 设置为 node 在我的 tsconfig.json file。P>

"moduleResolution": "node"

之后,我能够从量角器导入浏览器等。

import { browser } from 'protractor'

首先,您需要检查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"
    ]
  }
}

如果您还有任何额外的肯定模块,则将在本地路径中的typeRoots目录拾取它们: node_modules/@types

尝试运行:

yarn install && yarn webpack:build 

应该下载所有缺少的模块并重建UI。

您没有在本地安装量角模块/库。所以,

运行此命令:npm安装 - 保存量角器。如果它不起作用。尝试以下操作:

  1. 打开VSCODE,然后单击视图 - >终端

  2. 导航到要安装量角器的文件夹。

  3. 使用以下命令安装量角器。

npm安装量角器-g

4.Restart Vscode。它将在您的本地中添加protractor.conf.js文件。

最新更新