Снежинка NodeJs Ошибка: не удается найти модуль './data/packed/latest.json' - PullRequest
0 голосов
/ 22 марта 2020

Следующий код хорошо работает в локальном NodeJS процессе windows. Тем не менее, он не работает в AWS лямбда.

Я не совсем понимаю, почему он не может загрузить модуль: Не удается найти модуль './data/packed/latest.json'

Ввод лямбда-события:

{
    "Service": "snowflake",
    "Profile": "testetl",
    "Interval": 10,
    "Content": "select * from mytable limit 20",
    "Data": null
}

Учетные данные предоставляются в переменной среды: testetl: {account: '[my-account]', accessUrl: ' https:. // [мой-счет] [мой регион] .snowflakecomputing.com 'имя пользователя: "[мой-имя пользователя], пароль: '[мой-пароль]', склад:' [my- хранилище данных] ', база данных:' [my-db] ', jsTreatIntegerAsBigInt: true}

function connectSnowflake(connection) {
    return new Promise((resolve, reject) => {
        connection.connect((err, conn) => {
            if (err)
                reject(err);
            else
                resolve(conn);
        });
    });
}
function executeSnowflake(connection, sqlText) {
    return new Promise((resolve, reject) => {
        connection.execute({
            sqlText: sqlText,
            streamResult: true,
            complete: (err, stmt, rows) => {
                if (err)
                    reject(err);
                else
                    resolve(stmt);
            }
        });
    });
}
function readSnowflakeRows(statement, start, end) {
    return new Promise((resolve, reject) => {
        let rows = [];
        statement
            .streamRows({ start: start, end: end })
            .on('error', (err) => {
            throw err;
        })
            .on('data', (row) => {
            for (let key in row) {
                rows.push(row[key]);
                break;
            }
        })
            .on('end', () => resolve(rows));
    });
}
const snowflake = require('snowflake-sdk');
exports.handler = async (event) => {
    const connection = snowflake.createConnection(eval(`(${process.env[event.Profile]})`));
    let connectionInstance = await connectSnowflake(connection);
    let id = connectionInstance.getId();
    let statement = await executeSnowflake(connection, event.Content);
    let rowsCount = statement.getNumRows();
    let maxRows = Math.min(1000, rowsCount);
    event.Values = await readSnowflakeRows(statement, 0, maxRows);
    return event;
};

Сведения об ошибке:

{
    "errorType": "Runtime.ImportModuleError",
    "errorMessage": "Error: Cannot find module './data/packed/latest.json'\nRequire stack:\n- /var/task/node_modules/moment-timezone/index.js\n- /var/task/node_modules/snowflake-sdk/lib/connection/result/sf_timestamp.js\n- /var/task/node_modules/snowflake-sdk/lib/connection/result/column.js\n- /var/task/node_modules/snowflake-sdk/lib/connection/result/result.js\n- /var/task/node_modules/snowflake-sdk/lib/connection/statement.js\n- /var/task/node_modules/snowflake-sdk/lib/connection/connection.js\n- /var/task/node_modules/snowflake-sdk/lib/core.js\n- /var/task/node_modules/snowflake-sdk/lib/snowflake.js\n- /var/task/node_modules/snowflake-sdk/index.js\n- /var/task/index.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js",
    "stack": [
        "Runtime.ImportModuleError: Error: Cannot find module './data/packed/latest.json'",
        "Require stack:",
        "- /var/task/node_modules/moment-timezone/index.js",
        "- /var/task/node_modules/snowflake-sdk/lib/connection/result/sf_timestamp.js",
        "- /var/task/node_modules/snowflake-sdk/lib/connection/result/column.js",
        "- /var/task/node_modules/snowflake-sdk/lib/connection/result/result.js",
        "- /var/task/node_modules/snowflake-sdk/lib/connection/statement.js",
        "- /var/task/node_modules/snowflake-sdk/lib/connection/connection.js",
        "- /var/task/node_modules/snowflake-sdk/lib/core.js",
        "- /var/task/node_modules/snowflake-sdk/lib/snowflake.js",
        "- /var/task/node_modules/snowflake-sdk/index.js",
        "- /var/task/index.js",
        "- /var/runtime/UserFunction.js",
        "- /var/runtime/index.js",
        "    at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
        "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
        "    at Object.<anonymous> (/var/runtime/index.js:43:30)",
        "    at Module._compile (internal/modules/cjs/loader.js:955:30)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)",
        "    at Module.load (internal/modules/cjs/loader.js:811:32)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:723:14)",
        "    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)",
        "    at internal/main/run_main_module.js:17:11"
    ]
}

Пакет. json Файл :

{
    "name": "snowflakeclient",
    "version": "1.0.0",
    "main": "index.js",
    "scripts": {
        "build": "tsc"
    },
    "dependencies": {
        "snowflake-sdk": "^1.5.0"
    },
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...