package.json里修改type:
json
{
...
"type": "commonjs",//commonjs语法
"type": "module",//esmodule语法
...
}
commonjs语法:
CommUtils.js
文件:
javascript
const fs = require('fs');
function readJsonFile(filePath) {
try {
const data = fs.readFileSync(filePath, 'utf-8');
return JSON.parse(data);
} catch (error) {
// 处理读取文件或解析 JSON 错误
console.error(`Error reading JSON file ${filePath}: ${error.message}`);
return null;
}
}
function writeJsonFile(filePath, data) {
// 如果data为null,则不写入文件
if (data === null || data === undefined || (Array.isArray(data) && data.length === 0)) {
return;
}
try {
const jsonData = JSON.stringify(data, null, 4);
fs.writeFileSync(filePath, jsonData, 'utf-8');
} catch (error) {
// 处理写入文件错误
console.error(`Error writing JSON file ${filePath}: ${error.message}`);
}
}
function bytesToInteger(bytes, isBigEndian) {
if (bytes.length < 1 || bytes.length > 8) {
throw new Error("bytes.length<1||bytes.length>8");
}
let temp = 0;
if (isBigEndian) {
for (let i = 0; i < bytes.length; i++) { // 从低位到高位
if (i === 0) {
temp = (bytes[i] & 0xFF) << (i * 8);
} else {
temp = temp | ((bytes[i] & 0xFF) << (i * 8));
}
}
} else {
for (let i = bytes.length - 1; i >= 0; i--) { // 从高位到低位
if (i === (bytes.length - 1)) {
temp = (bytes[i] & 0xFF) << ((bytes.length - i - 1) * 8);
} else {
temp = temp | ((bytes[i] & 0xFF) << ((bytes.length - i - 1) * 8));
}
}
}
return temp;
}
function toHexString(num){
return '0x'+num.toString(16).toUpperCase().padStart(2,'0');
}
function listToHexString(arr){
let str = ''
for(let i=0;i<arr.length;i++){
str += toHexString(arr[i]) +(i!=arr.length-1?', ':'')
}
return str
}
module.exports = {
readJsonFile,
writeJsonFile,
bytesToInteger,
toHexString,
listToHexString,
}
使用:
javascript
const path = require('path');
const CommUtils = require(path.join(__dirname, 'CommUtils.js'));
console.log(CommUtils.toHexString(111));
esmodule语法:
CommUtils.js
文件:
javascript
import { readFileSync, writeFileSync } from 'fs';
function readJsonFile(filePath) {
try {
const data = readFileSync(filePath, 'utf-8');
return JSON.parse(data);
} catch (error) {
// 处理读取文件或解析 JSON 错误
console.error(`Error reading JSON file ${filePath}: ${error.message}`);
return null;
}
}
function writeJsonFile(filePath, data) {
// 如果data为null,则不写入文件
if (data === null || data === undefined || (Array.isArray(data) && data.length === 0)) {
return;
}
try {
const jsonData = JSON.stringify(data, null, 4);
writeFileSync(filePath, jsonData, 'utf-8');
} catch (error) {
// 处理写入文件错误
console.error(`Error writing JSON file ${filePath}: ${error.message}`);
}
}
function bytesToInteger(bytes, isBigEndian) {
if (bytes.length < 1 || bytes.length > 8) {
throw new Error("bytes.length<1||bytes.length>8");
}
let temp = 0;
if (isBigEndian) {
for (let i = 0; i < bytes.length; i++) { // 从低位到高位
if (i === 0) {
temp = (bytes[i] & 0xFF) << (i * 8);
} else {
temp = temp | ((bytes[i] & 0xFF) << (i * 8));
}
}
} else {
for (let i = bytes.length - 1; i >= 0; i--) { // 从高位到低位
if (i === (bytes.length - 1)) {
temp = (bytes[i] & 0xFF) << ((bytes.length - i - 1) * 8);
} else {
temp = temp | ((bytes[i] & 0xFF) << ((bytes.length - i - 1) * 8));
}
}
}
return temp;
}
function toHexString(num){
return '0x'+num.toString(16).toUpperCase().padStart(2,'0');
}
function listToHexString(arr){
let str = ''
for(let i=0;i<arr.length;i++){
str += toHexString(arr[i]) +(i!=arr.length-1?', ':'')
}
return str
}
export default {
readJsonFile,
writeJsonFile,
bytesToInteger,
toHexString,
listToHexString,
}
使用:
javascript
import CommUtils from './CommUtils.js';
console.log(CommUtils.toHexString(111));