RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[node.js]

Martin Hope
Алексей
Asked: 2025-03-22 20:07:49 +0000 UTC

express js 数据传递到所有路由获取

  • 5

问题是如何正确地将相同的数据传输到所有路​​由,以免写出类似这样的内容:

router.route('/home')
    .get((req, res) => res.render('home', {toast: res.flash('toast')}))
router.route('/email')
    .get((req, res) => res.render('email', {toast: res.flash('toast')}))
router.route('/contact')
    .get((req, res) => res.render('contact', {toast: res.flash('toast')}))

据我了解,在中间件级别实现这一点是正确的,但是如何实现呢?最小任务是转发到所有路由,最大任务是只获取请求

node.js
  • 2 个回答
  • 33 Views
Martin Hope
ralph
Asked: 2025-02-24 14:36:27 +0000 UTC

重装windows后如何注册node、git等

  • 5

我将 Windows 重置为出厂设置,
我需要的所有应用程序都安装在 D 盘上(node、git、vsc、webstorm 等)。

但是现在它们在系统中“未注册”,并且 cmd 看不到命令​​,例如“node -v”
问题是,如何使所有这些变得“活跃”并正常工作,以便整个系统可以再次看到这些程序?
以及重置 Windows 后安装在其他磁盘上的任何程序

这是我的第一次经历,所以不要打败我)

node.js
  • 2 个回答
  • 92 Views
Martin Hope
Streammer
Asked: 2025-02-23 23:01:29 +0000 UTC

卷在 Docker 中不起作用。更准确地说,在 Nest.js 项目中跟踪文件更改不起作用

  • 4

我正在使用 Docker 版本 20.10.21,构建 baeda1f。操作系统 Windows 11。决定在 Nest.js 上“dockerize”该应用程序。我通过 nest cli 创建了一个空项目并安装了 nodemon,虽然这里基本上不需要它,但没有它跟踪也可以工作。应用程序运行正常,一切正常。然后我决定创建一个 Docker 镜像和一个基于它的容器。这是我的Dockerfile

FROM node:latest

WORKDIR /app

RUN npm install -g nodemon

COPY package.json .

RUN npm install

COPY . .

EXPOSE 3030

CMD ["npm", "run", "start:dev"]

这是我的package.json

{
  "name": "nest_docker_setup",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nodemon --config nodemon.json",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@nestjs/common": "^11.0.1",
    "@nestjs/core": "^11.0.1",
    "@nestjs/platform-express": "^11.0.1",
    "reflect-metadata": "^0.2.2",
    "rxjs": "^7.8.1"
  },
  "devDependencies": {
    "@eslint/eslintrc": "^3.2.0",
    "@eslint/js": "^9.18.0",
    "@nestjs/cli": "^11.0.0",
    "@nestjs/schematics": "^11.0.0",
    "@nestjs/testing": "^11.0.1",
    "@swc/cli": "^0.6.0",
    "@swc/core": "^1.10.7",
    "@types/express": "^5.0.0",
    "@types/jest": "^29.5.14",
    "@types/node": "^22.10.7",
    "@types/supertest": "^6.0.2",
    "eslint": "^9.18.0",
    "eslint-config-prettier": "^10.0.1",
    "eslint-plugin-prettier": "^5.2.2",
    "globals": "^15.14.0",
    "jest": "^29.7.0",
    "nodemon": "^3.1.9",
    "prettier": "^3.4.2",
    "source-map-support": "^0.5.21",
    "supertest": "^7.0.0",
    "ts-jest": "^29.2.5",
    "ts-loader": "^9.5.2",
    "ts-node": "^10.9.2",
    "tsconfig-paths": "^4.2.0",
    "typescript": "^5.7.3",
    "typescript-eslint": "^8.20.0"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}

main.ts 如下所示

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(process.env.PORT ?? 3030);
}
bootstrap();

这就是我的app.service.ts文件的样子

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!2';
  }
}

这就是我创建图像的方式

docker build -t server-nest:v1.0 .

这就是我创建容器的方法

docker run --name test-nest2 -p 3002:3030 --rm -v C:\Users\Dmitrij\work\nest_docker_setup:/app -v /app/node_modules server-nest:v1.0

绝对路径是正确的。这是应用程序的文件结构 项目截图

究竟问题是什么?图像和容器已创建,但变更跟踪不起作用。那些。如果我更改 app.service.ts 文件中的行 return 'Hello World!2';然后通过 GET 请求 http://localhost:3002 我获得了之前的值。但即使没有 Docker,一切仍然正常。我想尝试安装 nodemon 并看看它是否可以工作,但是它没有工作。我尝试在容器运行时检查 nodemon 是否以这种方式安装。在 Docker 容器内,我运行命令来检查 nodemon 是否看到更改:

docker exec -it test-nest2 sh
nodemon --watch src --exec "nest start --watch"

我在控制台中收到了这个响应

[2:08:59 PM] Starting compilation in watch mode...

[2:09:01 PM] Found 0 errors. Watching for file changes.

[Nest] 99  - 02/23/2025, 2:09:01 PM     LOG [NestFactory] Starting Nest application...
[Nest] 99  - 02/23/2025, 2:09:01 PM     LOG [InstanceLoader] AppModule dependencies initialized +8ms
[Nest] 99  - 02/23/2025, 2:09:01 PM     LOG [RoutesResolver] AppController {/}: +3ms
[Nest] 99  - 02/23/2025, 2:09:01 PM     LOG [RouterExplorer] Mapped {/, GET} route +2ms
[Nest] 99  - 02/23/2025, 2:09:01 PM     LOG [NestApplication] Nest application successfully started +1ms
[Nest] 99  - 02/23/2025, 2:09:01 PM   ERROR [NestApplication] Error: listen EADDRINUSE: address already in use :::3030 +2ms
node:net:1937
    const ex = new UVExceptionWithHostPort(err, 'listen', address, port);
               ^

Error: listen EADDRINUSE: address already in use :::3030
    at Server.setupListenHandle [as _listen2] (node:net:1937:16)
    at listenInCluster (node:net:1994:12)
    at Server.listen (node:net:2099:7)
    at ExpressAdapter.listen (/app/node_modules/@nestjs/platform-express/adapters/express-adapter.js:109:32)
    at /app/node_modules/@nestjs/core/nest-application.js:183:30
    at new Promise (<anonymous>)
    at NestApplication.listen (/app/node_modules/@nestjs/core/nest-application.js:173:16)
    at async bootstrap (/app/src/main.ts:6:3) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 3030
}

Node.js v23.8.0
PS C:\Users\Dmitrij\work\nest_docker_setup> 

我尝试更改端口,但没有什么帮助。我希望有人能提出一些建议。

node.js
  • 1 个回答
  • 31 Views
Martin Hope
Kirill Mineev
Asked: 2025-02-14 22:21:43 +0000 UTC

在 Windows PowerShell 中运行“npm ci && npm start”命令时出错

  • 5

根据任务条款,该团队npm ci && npm start必须启动该项目。我使用 vite 汇编器。我知道如何组建一个团队npm start。但是当我运行它时它npm ci && npm start出现错误:

在此版本中,“&&”标记不是有效的语句分隔符。 + CategoryInfo:ParserError:(:) [],ParentContainsErrorRecordException + FullyQualifiedErrorId:InvalidEndOfLi

我使用 NodeJs 版本 22.14.0 LTS。

npm ci && npm start我想知道如何使用这个( )命令来运行项目。

node.js
  • 1 个回答
  • 24 Views
Martin Hope
ffffrrr
Asked: 2024-12-15 18:35:01 +0000 UTC

我无法删除页面重新加载

  • 5

我正在研究socket.io是如何工作的,做了一个简单的实时聊天,我遇到了一个问题:当我按Enter键时,页面会重新加载(否则一切都很好)。我已经尝试添加 e.preventDefault() 和 DOMContentLoaded 事件,但没有任何帮助。

索引.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
    <input type="text" id="inp"/>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/socket.io.min.js"></script>
    <script src="script.js" type="module"></script>
</body>
</html>

脚本.js:

    
    const root = document.getElementById('app');
    const inp = document.getElementById('inp'); 
    
    const socket = io("http://localhost:3000");
    
    

        
        socket.on('historyLoad', (data) => {
            root.innerHTML = '';
            data.forEach(message => {
                const div = document.createElement('div');
                div.innerText = message.text;
                root.append(div);
            })}
        );
        
        let userName = localStorage.getItem('userName');
        if (!userName) {
            userName = prompt('Enter your name');
            localStorage.setItem('userName', userName);
        }
        
        socket.on('message', (data) => {
            console.log(data);
            root.innerHTML += `<div>${data.user}: ${data.text}</div>`;
            const div = document.createElement('div');
            div.innerText = data.text;
            root.append(div);
            inp.value = ''; 
        })
        
        document.addEventListener('DOMContentLoaded', () => {
        
            inp.addEventListener('keyup', (event) => {
                if (event.key === 'Enter') {
                    event.preventDefault(); // Предотвращаем стандартное поведение браузера
                    const message = inp.value.trim();
                    if (message) {
                        socket.emit('message', { user: userName, text: message });
                        inp.value = ''; // Очищаем поле ввода
                    }
                }
            });
        });


服务器.js:

const express = require('express');
const {Server} = require('socket.io');
const fs = require('fs');
const cors = require('cors');

const filepath = './data.json';

const app = express();

const server = app.listen(3000, () => {
    console.log('listening on port 3000');
})

app.use(cors());

const io = new Server(server, {
    cors: {
        origin: '*',
        methods: ['GET', 'POST']
    }
})

let messages = [];

try {
    if (!fs.existsSync(filepath)) {
        fs.writeFileSync(filepath, '[]');
    }
    messages = JSON.parse(fs.readFileSync(filepath));
} catch (err) {
    console.log(err)
}

io.on('connection', (socket) => {
    console.log('a user connected', socket.id)
    socket.emit('historyLoad', messages)

    socket.on('message', (data) => {
        messages.push({
            user: data.user,
            text: data.text
        });
        fs.writeFileSync(filepath, JSON.stringify(messages));
        io.emit('message', data);
    })
})


node.js
  • 1 个回答
  • 30 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5