【问题标题】:typescript error running navalia example运行 navalia 示例的打字稿错误
【发布时间】:2017-08-08 01:09:37
【问题描述】:

我正在尝试从 https://github.com/joelgriffith/navalia 运行此示例,但就我而言,我无法让它正常工作:

navaliatest.ts

/// <reference path="typings.d.ts" />

import { Chrome } from 'navalia';
const chrome = new Chrome();

async function buyItOnAmazon() {
  const url = await chrome.goto('https://amazon.com');
  const typed = await chrome.type('input', 'Kindle');
  const clicked = await chrome.click('.nav-search-submit input');

  chrome.done();

  console.log(url, typed, clicked); // 'https://www.amazon.com/', true, true
}

buyItOnAmazon();

tsconfig.json

{
  "files": [
    "navaliatest.ts"
  ],
  "compilerOptions": {
    "noImplicitAny": false,
    "target": "es6",
    "moduleResolution": "node",
    "paths": {
      "*" : ["/usr/local/lib/node_modules/*"]
    }
  }
}

typings.d.ts

/// <reference path="/usr/local/lib/node_modules/navalia/build/Chrome.d.ts" />

declare module 'navalia' {
  var Chrome: any;
  export = Chrome;
}

以下是版本:

MacBook-Pro:testcasperjs myusername$ node --version
v6.11.2MacBook-Pro:testcasperjs myusername$ npm --version
3.10.10
MacBook-Pro:testcasperjs myusername$ tsc --version
Version 2.4.2

这是我得到的错误,虽然我得到了 .js 文件输出:

MacBook-Pro:testcasperjs myusername$ tsc navaliatest.ts
../../../usr/local/lib/node_modules/navalia/node_modules/chrome-launcher/chrome-finder.ts(203,16): error TS2339: Property 'from' does not exist on type 'ArrayConstructor'.
../../../usr/local/lib/node_modules/navalia/node_modules/chrome-launcher/chrome-launcher.ts(99,15): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
navaliatest.ts(3,10): error TS2305: Module ''navalia'' has no exported member 'Chrome'.

我确定某处有一个愚蠢的错误,但请有人帮我看看吗?谢谢。

【问题讨论】:

    标签: node.js google-chrome typescript ecmascript-6 google-chrome-headless


    【解决方案1】:

    您无需重新声明navalia。鉴于moduleResolution 设置为Node,它已经在node_modules/navalia/build/index.d.ts 为您完成了

    您需要将 module 设置为 commonjs 以便您可以在节点中运行它

    tsconfig.json

    {
      "files": [
        "navaliatest.ts"
      ],
      "compilerOptions": {
        "noImplicitAny": false,
        "target": "es6",
        "module": "commonjs",
        "moduleResolution": "Node"
      }
    }
    

    navaliatest.ts(无变化)

    import { Chrome } from 'navalia';
    const chrome = new Chrome();
    
    async function buyItOnAmazon() {
      const url = await chrome.goto('https://amazon.com');
      const typed = await chrome.type('input', 'Kindle');
      const clicked = await chrome.click('.nav-search-submit input');
    
      chrome.done();
    
      console.log(url, typed, clicked); // 'https://www.amazon.com/', true, true
    }
    
    buyItOnAmazon();
    

    它将无错误地创建navaliatest.js,可以在节点中运行。

    【讨论】:

    • 我收到了这个错误error TS2468: Cannot find global value 'Promise'
    • 你必须是因为tsconfig没有被读取而导致的错误,它将目标设置为es6从而识别Promise
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2021-10-24
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2022-01-05
    • 2018-06-05
    相关资源
    最近更新 更多