azure - 在我的本地机器上调试逻辑应用程序功能时,我收到 ESOCKET 错误
问题描述
大家好,当我尝试在本地机器上调试逻辑应用程序功能时,它给了我一个 Esocket 错误。我在Mac机器上工作,一切正常,最近转移到Windows机器尝试设置开发环境,它不允许我在本地调试该功能。我正在将一个 csv 文件推送到数据库中。该函数仅读取以“,”分隔的 csv 文件,并使用生成的 sql 模式和标题行模式加载到临时表中。
这是我正在编写的代码的确切副本。IT 在 const connection = new sql.connectionPool 命令上失败。
const mu = require("../lib/myUtil");
const sql = require('mssql');
const csv = require('csvtojson');
const settings = require('../lib/settings');
module.exports = async function(context, req) {
context.log('Write Air BnB Roster.');
if (req.body.data) {
var incomingData = req.body.data;
var header_names = [];
var records = await csv({ maxRowLength: 65535 }).fromString(incomingData).on('header', (header) => {
header_names = header;
}).on('error', (err) => {
console.log("csv err: " + err)
});
console.log("parsed data: " + records.length);
//Process Empty Data
if (records.length == 0) {
context.res = {
status: 200,
/* Defaults to 200 */
body: {
"total": records.length,
"rowsAffected": 0,
"headerCount": header_names.length
}
};
return;
}
const conn = new sql.ConnectionPool(settings.prodDBOpts);
await conn.connect();
// --------- Change Table Name ---------
const table = new sql.Table('[dbo].[stg_arise_employee]');
table.create = false;
// --------- Paste Below --------------
table.columns.add('RecordDate', sql.DateTime, { nullable: true })
table.columns.add('IBID', sql.Int, { nullable: true })
table.columns.add('IBName', sql.VarChar(60), { nullable: true })
table.columns.add('AriseUserID', sql.Int, { nullable: true })
table.columns.add('CSPID', sql.Int, { nullable: true })
table.columns.add('Firstname', sql.VarChar(40), { nullable: true })
table.columns.add('Lastname', sql.VarChar(40), { nullable: true })
table.columns.add('email', sql.VarChar(60), { nullable: true })
table.columns.add('Role', sql.VarChar(40), { nullable: true })
table.columns.add('SupportResourceAriseUSERID', sql.Int, { nullable: true })
table.columns.add('SupportResourceCSPID', sql.Int, { nullable: true })
table.columns.add('SupportResourceName', sql.VarChar(40), { nullable: true })
table.columns.add('Wave', sql.VarChar(40), { nullable: true })
table.columns.add('WaveStartDate', sql.DateTime, { nullable: true })
table.columns.add('Application', sql.VarChar(40), { nullable: true })
table.columns.add('ApplicationID', sql.Int, { nullable: true })
table.columns.add('OffboardDate', sql.DateTime, { nullable: true })
table.columns.add('AirbnbID', sql.Int, { nullable: true })
table.columns.add('ZendeskID', sql.VarChar(20), { nullable: true })
table.columns.add('ScorebuddyID', sql.VarChar(40), { nullable: true })
table.columns.add('Customfield4', sql.VarChar(40), { nullable: true })
table.columns.add('Customfield5', sql.VarChar(40), { nullable: true })
table.columns.add('Customfield6', sql.VarChar(40), { nullable: true })
table.columns.add('Customfield7', sql.VarChar(40), { nullable: true })
table.columns.add('Customfield8', sql.VarChar(40), { nullable: true })
table.columns.add('Customfield9', sql.VarChar(40), { nullable: true })
table.columns.add('Customfield10', sql.VarChar(40), { nullable: true })
// --------- Paste Above ---------
records.forEach((data) => {
table.rows.add(
// --------- PASTE BELOW ---------
mu.validateDate2(data['RecordDate']),
mu.validateNumber(data['IBID']),
mu.validateString(data['IB Name']),
mu.validateNumber(data['Arise UserID']),
mu.validateNumber(data['CSPID']),
mu.validateName2(data['Firstname']),
mu.validateName2(data['Lastname']),
mu.validateString(data['email']),
mu.validateString(data['Role']),
mu.validateNumber(data['SupportResourceAriseUSERID']),
mu.validateNumber(data['SupportResourceCSPID']),
mu.validateString(data['SupportResourceName']),
mu.validateString(data['Wave']),
mu.validateDate3(data['Wave Start Date']),
mu.validateProgram(data['Application']),
mu.validateNumber(data['Application ID']),
mu.validateDate2(data['Offboard Date']),
mu.validateNumber(data['AirbnbID']),
mu.validateString(data['ZendeskID']),
mu.validateString(data['Scorebuddy ID']),
mu.validateString(data['Customfield4']),
mu.validateString(data['Customfield5']),
mu.validateString(data['Customfield6']),
mu.validateString(data['Customfield7']),
mu.validateString(data['Customfield8']),
mu.validateString(data['Customfield9']),
mu.validateString(data['Customfield10'])
// --------- PASTE ABOVE ---------
);
});
context.log("Async function started!");
const request = new sql.Request(conn);
try {
const results = await request.bulk(table);
context.log("Rows affected: " + results.rowsAffected);
context.res = {
status: 200,
/* Defaults to 200 */
body: {
"total": records.length,
"rowsAffected": results.rowsAffected,
"headerCount": header_names.length
}
};
await conn.close();
console.log("connection closed.")
} catch (error) {
context.log(error);
context.res = {
status: 400,
body: error
};
}
} else {
context.res = {
status: 200,
/* Defaults to 200 */
body: {
"total": 0,
"rowsAffected": 0,
"headerCount": 0
}
};
}
};
解决方案
更新:我正在运行节点版本 12.xx 我将节点降级到版本 10.14.1 并且它可以工作我猜该版本与我使用的库不兼容。
推荐阅读
- reactjs - 特定组件的深色主题
- vue.js - 在 VUE.js 中访问孙子的属性
- spring - 应该设置什么状态来返回 HttpStatus 中实体的验证错误
- angular - Angular - 使用可编辑配置文件中的值为 serviceURL 定义 DI 令牌
- swift - 为什么在 SwiftUI 中单击空白区域后会调用 onTapGesture?
- arrays - 如何将直接值分配给 C 中动态创建的二维数组?
- java - 为什么在其父类中未定义子类构造函数?
- angular - 如何在结构指令中传递输入变量?
- google-apps-marketplace - 为现有用户重新发布APP的行为
- javascript - 如何将 hello 组件放在导航栏下?粒子占据整个屏幕