用JavaScript导入异步函数

时间:2018-12-10 17:31:30

标签: javascript node.js puppeteer

我是Node,Javascript和Puppeteer的初学者。给出以下代码,我只是在其中尝试使用其他文件中的一个函数:

const waitForFrame = require ("../../lib/frames");
const screenshotFolder = 'test/screenshots';

module.exports = async(page) => {

    try {
      const iframe = await waitForFrame(page);
      await iframe.waitForSelector('.competition-response__copy');
      await page.waitForSelector({
        visible: '.competition-response__copy'
      });

      const confirmationMessageText = await frame.$eval('.competition-response__copy > p', e => e.textContent);
      return confirmationMessageText;

    } catch (err) {
      await page.screenshot({
        path: screenshotFolder + '/saveYourEntryButton.png',
        fullPage: true
      });
    }

还有一个帮助文件:

module.exports = async function waitForFrame(page) { export async 
function waitForFrame(page) {
  let fulfill;
  const promise = new Promise(x => fulfill = x);
  checkFrame();
  return promise;

  function checkFrame() {
    const frame = page.frames().find(f => f.name() === 'iframe');
    if (frame) {
      fulfill(frame)
    } else
      page.once('frameattached', checkFrame);
  }
};

我的包json如下:

"engines": {
  "node": ">=6"
},
"dependencies": {
  "chai": "^4.1.2",
  "chai-as-promised": "^7.1.1",
  "lodash": "^4.17.10",
  "mocha": "^5.2.0",
  "puppeteer": "^1.6.2",
  "yargs": "^12.0.1",
  "express": "^4.16.4",
  "supertest": "^3.3.0"
},
"devDependencies": {
  "chai": "^4.2.0",
  "chai-dom": "^1.8.1",
  "mocha": "^5.2.0",
  "js-comments": "^0.5.4",
  "chai-as-promised": "^7.1.1",
  "express": "^4.16.4",
  "supertest": "^3.3.0",
}
}

我收到如下错误:

import {waitForFrame} from "../../lib/frames";
       ^

SyntaxError: Unexpected token {
    at new Script (vm.js:79:7)

我确定这是一个初学者的错误,但感谢您提供了快速的指导。我知道有很多不同的方法可以导入,具体取决于您遵循的Javascript标准。

谢谢

1 个答案:

答案 0 :(得分:0)

您正尝试使用import作为本机,但这是no still supported on ES6,问题与异步功能无关,但作为意外令牌导入,您有一些选择:

  1. 请勿使用importexport,而应使用:

    const waitForFrame = require(“ ../../ lib / frames”);

这很好用,并且在节点6中受支持。

  1. 在该version is supported中迁移到节点10,就可以使用它。

  2. 使用babel之类的编译器或适用于您的任何其他编译器,这涉及更多的依赖关系,但是您可以在最早的Node版本上使用现代的API。

一切取决于您的喜好。

希望这对您有帮助!