我是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标准。
谢谢
答案 0 :(得分:0)
您正尝试使用import
作为本机,但这是no still supported on ES6,问题与异步功能无关,但作为意外令牌导入,您有一些选择:
请勿使用import
或export
,而应使用:
const waitForFrame = require(“ ../../ lib / frames”);
这很好用,并且在节点6中受支持。
在该version is supported中迁移到节点10,就可以使用它。
使用babel之类的编译器或适用于您的任何其他编译器,这涉及更多的依赖关系,但是您可以在最早的Node版本上使用现代的API。
一切取决于您的喜好。
希望这对您有帮助!