remove default env values. correct package json with env vars . #6
@@ -7,7 +7,6 @@ COPY package.json package-lock.json ./
|
|||||||
RUN npm ci
|
RUN npm ci
|
||||||
|
|
||||||
COPY tsconfig.json ./
|
COPY tsconfig.json ./
|
||||||
COPY public ./public
|
|
||||||
COPY src ./src
|
COPY src ./src
|
||||||
|
NBizyaev marked this conversation as resolved
|
|||||||
|
|
||||||
RUN npm run build && npm prune --omit=dev
|
RUN npm run build && npm prune --omit=dev
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "tsx watch src/index.ts",
|
"dev": "tsx watch --env-file=.env src/index.ts",
|
||||||
|
NBizyaev marked this conversation as resolved
Outdated
NBizyaev
commented
мы зациклились мы зациклились
"dev": "tsx watch --env-file=.env src/index.ts", - это корректная строчка
потому что это запуск проекта разработчиком
на его, разработчика, компьютере
и переменные окружения он, разработчик, положил в файл .env или .env.* и разумеется хочет чтобы при запуске проекта у него локально, эти переменные окружения из этого файла использовались в его, разработчика, коде.
|
|||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"start": "node dist/index.js"
|
"start": "node --env-file=.env dist/index.js"
|
||||||
|
NBizyaev marked this conversation as resolved
Outdated
NBizyaev
commented
мы зациклились Для запуска билда в продакшне мы будем использовать мы зациклились
"node --env-file=.env dist/index.js" - это корректная строчка
потому что это запуск билда разработчиком
на его, разработчика, компьютере
и переменные окружения он, разработчик, положил в файл .env или .env.* и разумеется хочет чтобы при запуске билда у него локально, эти переменные окружения из этого файла использовались в его, разработчика, коде.
Для запуска билда в продакшне мы будем использовать
CMD ["node", "dist/index.js"]
без указания конкретного .env
так как там в продакшн окружении будут указаны свои собственные значения переменных продакшн окружения.
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mqtt": "^5.15.1",
|
"mqtt": "^5.15.1",
|
||||||
|
|||||||
@@ -4,12 +4,21 @@ import type { TopicHandler } from '../types.js'
|
|||||||
|
|
||||||
export const TOPIC = 'data/edge5/modbus/v2'
|
export const TOPIC = 'data/edge5/modbus/v2'
|
||||||
|
|
||||||
|
const REGISTER_COUNT = 125
|
||||||
const mapper = createMetricMapper({
|
const mapper = createMetricMapper({
|
||||||
filePath: process.env.EDGE5_MODBUS_V2_MAPPING_FILE as string,
|
filePath: process.env.EDGE5_MODBUS_V2_MAPPING_FILE as string,
|
||||||
})
|
})
|
||||||
|
|
||||||
function parseValues(payload: Buffer): number[] {
|
function parseValues(payload: Buffer): number[] {
|
||||||
return JSON.parse(payload.toString('utf8')) as number[]
|
const values = JSON.parse(payload.toString('utf8')) as number[]
|
||||||
|
assertRegisterCount(values)
|
||||||
|
return values
|
||||||
|
}
|
||||||
|
|
||||||
|
function assertRegisterCount(values: number[]): void {
|
||||||
|
if (values.length !== REGISTER_COUNT) {
|
||||||
|
throw new Error(`Expected ${REGISTER_COUNT} modbus values, got ${values.length}`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function postMetrics(metrics: MappedMetric[]): Promise<void> {
|
async function postMetrics(metrics: MappedMetric[]): Promise<void> {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { TopicHandler } from '../types.js'
|
|||||||
export const TOPIC = 'data/edge5/modbus/v1'
|
export const TOPIC = 'data/edge5/modbus/v1'
|
||||||
|
|
||||||
const EDGE = 'edge5'
|
const EDGE = 'edge5'
|
||||||
|
const REGISTER_COUNT = 125
|
||||||
|
|
||||||
type Edge5ModbusMetric = {
|
type Edge5ModbusMetric = {
|
||||||
edge: string
|
edge: string
|
||||||
@@ -13,7 +14,15 @@ type Edge5ModbusMetric = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function parseValues(payload: Buffer): number[] {
|
function parseValues(payload: Buffer): number[] {
|
||||||
return JSON.parse(payload.toString('utf8')) as number[]
|
const values = JSON.parse(payload.toString('utf8')) as number[]
|
||||||
|
assertRegisterCount(values)
|
||||||
|
return values
|
||||||
|
}
|
||||||
|
|
||||||
|
function assertRegisterCount(values: number[]): void {
|
||||||
|
if (values.length !== REGISTER_COUNT) {
|
||||||
|
throw new Error(`Expected ${REGISTER_COUNT} modbus values, got ${values.length}`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function toMetrics(values: number[], timestamp: number): Edge5ModbusMetric[] {
|
function toMetrics(values: number[], timestamp: number): Edge5ModbusMetric[] {
|
||||||
|
|||||||
в проекте нет папки public
(обычно, такую или подобную папку (assets) создают в проекте тогда,
когда нужно использовать какие-то файлы, которые лежат прямо в проекте,
например, файлы маппингов можно было бы вынести в общую папку mappings
и копировать её в контейнер, чтобы быть уверенным, что когда приложению понадобится читать файл маппинга,
то он будет найдет в общей папке mappings. Рекомендую. )