TypeError [ERR_INVALID_ARG_TYPE]:“原始”参数的类型必须为puppeteer node js函数

时间:2020-05-13 09:20:04

标签: node.js puppeteer node-promisify

我在这里呆了一段时间,我不明白问题所在。有人在这个问题上启发了我。这是代码。

const puppeteer = require('puppeteer');
(async() => {
    let infourl = 'https://www.imdb.com/title/tt0111161/?ref_=fn_al_tt_3';
    let browser = await puppeteer.launch();
    let page = await browser.newPage();
    await page.goto(infourl, { waitUntil:'networkidle2' });
    let data = await page.evaluate( () =>{
        let stats = document.querySelector('div[class="title_wrapper"]').innerText;
        return {stats};
    });
    console.log(data);
    debugger;
    await browser.close();
})();

这是日志::

internal/util.js:209
    throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'original', 'function');
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "original" argument must be of type function
    at promisify (internal/util.js:209:11)
    at Object.<anonymous> (/home/hadi/Desktop/datachori/node_modules/extract-zip/index.js:11:18)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/hadi/Desktop/datachori/node_modules/puppeteer/lib/BrowserFetcher.js:25:20)

2 个答案:

答案 0 :(得分:3)

发生在最新版本的puppeteer中。
您的脚本将在较低版本中正常运行。

尝试以下脚本:

npm i -save puppeteer@1.7.0

答案 1 :(得分:0)

执行以下命令

#include <GL/glew.h>
#include <GL/glut.h>
#include <stdio.h>

const char* vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
"   gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";

const char* fragmentShaderSource = "#version 330 core\n"
"in vec4 color;\n"
"out vec4 FragColor;\n"
"uniform vec3 figColor;\n"
"void main()\n"
"{\n"
"   FragColor = vec4(figColor, 0.0f);\n"
"}\n\0";

// Set of vertices that draw the different figures:
float vertices1[] = { 
    -0.8f, 0.6f, 0.0f, 
    -0.8f, 0.4f, 0.0f,
    -0.83f, 0.44f, 0.0f,
    -0.87f, 0.51f, 0.0f,
    -0.9f, 0.57f, 0.0f,
    -0.93f, 0.63f, 0.0f,
    -0.95f, 0.69f, 0.0f,
    -0.97f, 0.75f, 0.0f,
    -0.98f, 0.8f, 0.0f,
    -0.91f, 0.8f, 0.0f,
    -0.85f, 0.79f, 0.0f,
    -0.8f, 0.77f, 0.0f,
};

float vertices2[] = {
    -0.8f, -0.15f, 0.0f, 
    -1.0f, 0.0f, 0.0f,
    -0.95f, 0.0f, 0.0f,
    -0.86f, -0.01f, 0.0f,
    -0.81f, -0.02f, 0.0f,
    -0.75f, -0.03f, 0.0f,
};

GLuint vertexShader;
GLuint fragmentShader;
GLuint shaderProgram;

void display(void) {
    // Background color.
    glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    glUseProgram(shaderProgram);
    GLint uniform = glGetUniformLocation(shaderProgram, "figColor");
    glUniform3f(uniform, 1.0f, 0.0f, 0.0f);
    glDrawArrays(GL_TRIANGLE_FAN, 0, 12);
    glUniform3f(uniform, 0.0f, 0.749f, 1.0f);
    glDrawArrays(GL_TRIANGLE_FAN, 0, 6);
    glUseProgram(0);

    glFlush();
}

// Main.
int main(int argc, char** argv) {
    glutInit(&argc, argv);
    // Color mode.
    glutInitDisplayMode(GLUT_RGBA);
    // Window size.
    glutInitWindowSize(500, 500);
    // Title.
    glutCreateWindow("Tarea 3: Figura con curvas");
    GLenum err = glewInit();
    if (err != GLEW_OK) {
        printf("glewInit failed: %s", glewGetErrorString(err));
        exit(1);
    }

    // Compile vertex shader.
    vertexShader = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
    glCompileShader(vertexShader);

    // Check for vertex shader compilation errors.   
    int success;
    char infoLog[512];
    glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
    if (!success) {
        glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);
        printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n");
    }

    // Compile fragment shader.
    fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
    glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
    glCompileShader(fragmentShader);

    // Check for fragment shader compile errors.  
    glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success);
    if (!success) {
        glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog);
        printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n");
    }

    // Link and delete shaders.
    shaderProgram = glCreateProgram();
    glAttachShader(shaderProgram, vertexShader);
    glAttachShader(shaderProgram, fragmentShader);
    glLinkProgram(shaderProgram);
    glDeleteShader(vertexShader);
    glDeleteShader(fragmentShader);

    //Separating the Vertex Buffer Objects.
    GLuint VBOs[2];
    glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices1), vertices1, GL_STATIC_DRAW);

    glBindBuffer(GL_ARRAY_BUFFER, VBOs[1]);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices2), vertices2, GL_STATIC_DRAW);

    // Specify a VertexArrayObject for each mesh.
    GLuint VAOs[2];
    glGenVertexArrays(2, VAOs);

    glBindVertexArray(VAOs[0]);
    glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
    glEnableVertexAttribArray(0);

    glBindVertexArray(VAOs[1]);
    glBindBuffer(GL_ARRAY_BUFFER, VBOs[1]);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
    glEnableVertexAttribArray(0);

    // Bind the VAO before the draw call.
    glBindVertexArray(VAOs[0]);
    glDrawArrays(GL_TRIANGLE_FAN, 0, 12);

    glBindVertexArray(VAOs[1]);
    glDrawArrays(GL_TRIANGLE_FAN, 0, 24);

    // Displaying the figures.
    glutDisplayFunc(display);
    glutMainLoop();
} 

然后:

npm config set PUPPETEER_SKIP_CHROMIUM_DOWNLOAD false

npm config set ignore-scripts false

改回忽略脚本的标志,因为如果保留为假,则会构成安全威胁