remove default env values. correct package json with env vars . #6
@@ -7,7 +7,6 @@ COPY package.json package-lock.json ./
|
||||
RUN npm ci
|
||||
|
||||
COPY tsconfig.json ./
|
||||
COPY public ./public
|
||||
COPY src ./src
|
||||
|
NBizyaev marked this conversation as resolved
|
||||
|
||||
RUN npm run build && npm prune --omit=dev
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"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",
|
||||
"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": {
|
||||
"mqtt": "^5.15.1",
|
||||
|
||||
@@ -4,12 +4,21 @@ import type { TopicHandler } from '../types.js'
|
||||
|
||||
export const TOPIC = 'data/edge5/modbus/v2'
|
||||
|
||||
const REGISTER_COUNT = 125
|
||||
const mapper = createMetricMapper({
|
||||
filePath: process.env.EDGE5_MODBUS_V2_MAPPING_FILE as string,
|
||||
})
|
||||
|
||||
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> {
|
||||
|
||||
@@ -4,6 +4,7 @@ import type { TopicHandler } from '../types.js'
|
||||
export const TOPIC = 'data/edge5/modbus/v1'
|
||||
|
||||
const EDGE = 'edge5'
|
||||
const REGISTER_COUNT = 125
|
||||
|
||||
type Edge5ModbusMetric = {
|
||||
edge: string
|
||||
@@ -13,7 +14,15 @@ type Edge5ModbusMetric = {
|
||||
}
|
||||
|
||||
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[] {
|
||||
|
||||
в проекте нет папки public
(обычно, такую или подобную папку (assets) создают в проекте тогда,
когда нужно использовать какие-то файлы, которые лежат прямо в проекте,
например, файлы маппингов можно было бы вынести в общую папку mappings
и копировать её в контейнер, чтобы быть уверенным, что когда приложению понадобится читать файл маппинга,
то он будет найдет в общей папке mappings. Рекомендую. )