分类: javascript

  • 服务器重启 pm2 重新启动应用程序

    如果您正在使用 PM2 来管理您的 Node.js 应用程序,并且在服务器重启后您希望应用程序能够自动重新启动,那么您可以通过以下步骤实现:

    1. 确保在服务器重启后 PM2 自动启动

    您可以使用以下命令将 PM2 添加为系统服务:

    pm2 startup

    这将生成一个命令,您需要复制并在终端中运行,以将 PM2 添加为系统服务。这样,在服务器重启后,PM2 将自动启动。

    1. 在 PM2 中启动应用程序

    使用以下命令在 PM2 中启动您的 Node.js 应用程序:

    pm2 start app.js

    请确保将 app.js 替换为您的应用程序的实际入口文件。

    1. 保存应用程序列表并重新加载

    使用以下命令将当前 PM2 应用程序列表保存到文件中:

    pm2 save

    这将在服务器重启后自动重新加载您的应用程序列表。

    总结来说,当您完成以上步骤后,您的 Node.js 应用程序将在服务器重启后自动重新启动。

  • hapi.js如何使用joi验证器

    在hapi.js中,可以使用Joi模块来进行数据验证。Joi是一个Node.js模块,用于验证和转换JavaScript对象。它支持各种数据类型、结构和规则的验证,并提供了易于使用和灵活的API。

    以下是一个使用Joi进行验证的示例:

    const Hapi = require('@hapi/hapi');
    const Joi = require('joi');
    
    const server = Hapi.server({
        port: 3000,
        host: 'localhost'
    });
    
    const validationSchema = Joi.object({
        username: Joi.string().alphanum().min(3).max(30).required(),
        password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')),
        email: Joi.string().email({ minDomainSegments: 2, tlds: { allow: ['com', 'net'] } })
    });
    
    server.route({
        method: 'POST',
        path: '/register',
        options: {
            validate: {
                payload: validationSchema
            }
        },
        handler: (request, h) => {
            // Handle request...
            return 'User registered successfully';
        }
    });
    
    server.start();
    

    在上述示例中,我们定义了一个Joi验证schema,并将其作为hapi.js路由选项中的payload验证器使用。当客户端发送POST请求到”/register”路由时,hapi.js将首先验证请求的payload是否符合我们定义的schema,如果验证失败,则返回400 Bad Request响应。如果验证通过,则调用路由处理函数来处理请求。

    需要注意的是,在上述示例中,我们将Joi验证schema定义为一个独立的变量,这样可以方便地重用它。此外,hapi.js的Joi验证器也支持其他类型的验证,比如params验证和query验证,具体用法与上述示例类似。

  • hapi.js验证器joi.js报错提示

    在使用hapi.js进行数据验证时,如果出现”Cannot set uncompiled validation rules without configuring a validator”的错误,这通常是因为没有正确配置Joi验证器。

    为了正确地使用Joi验证器,需要先将其配置为hapi.js的默认验证器。可以在hapi.js服务器对象的选项中添加”validate”字段来配置Joi验证器。以下是一个示例:

    const Hapi = require('@hapi/hapi');
    const Joi = require('joi');
    
    const server = new Hapi.Server({
        port: 3000,
        host: 'localhost',
        validate: {
            failAction: (request, h, err) => {
                throw err;
            },
            options: {
                abortEarly: false
            },
            schemaOptions: {
                abortEarly: false
            }
        }
    });
    
    // ...
    

    在上述示例中,我们将Joi验证器配置为hapi.js的默认验证器,并设置了一些选项。其中,failAction选项指定了验证失败时的处理方式,options选项和schemaOptions选项用于配置Joi验证器的选项。在使用Joi验证器时,需要遵循Joi的规则和语法,以确保验证器能够正常工作。

  • Nuxtjs如何引入代码高亮prismjs

    一,安装prismjs

    npm install prismjs

    二,配置nuxt.config.js

    在nuxt.config.js文件中添加prism插件

    export default {
      plugins: [
        '~/plugins/prism'
      ],
    }

    三,编写插件

    目录app/plugins/prism.js

    import Prism from 'prismjs'
    import 'prismjs/themes/prism-tomorrow.css' // 选择你喜欢的主题
    export default Prism

    四,引用插件

    在需要的页面,例如/pages/detail/_id.vue

    export default {
      ...
      mounted(){
        Prism.highlightAll()
      },
      ...
    }

  • 对象数组批量更新属性值,或增加新属性

    // ✅ Updating properties in multiple objects
    const arr1 = [
      {id: 1, name: 'Alice'},
      {id: 1, name: 'Bob'},
      {id: 3, name: 'Charlie'},
    ];
    const newArr = arr1.map(obj => {
      if (obj.id === 1) {
        return {...obj, name: 'Alfred'};
      }
    
      return obj;
    });
    
    // 👇️ [
    //  {id: 1, name: 'Alfred'}, {id: 1, name: 'Alfred'}, {id: 3, name: 'Charlie}
    // ]
    console.log(newArr);
    
  • npm包检查是否需要升级

    一,全局安装npm-check-updates

    npm install npm-check-updates

    安装完成后使用命令ncu

    二,免安装

    npx npm-check-updates

    三,使用方法

    进入项目目录 输入ncu命令后,命令行会返回项目中package的版本列表 如下

    ncu
    [====================] 16/16 100%
    
     @nuxtjs/auth-next        5.0.0-1648802546.c9880dc  →  5.0.0-1667386184.dfbbb54
     @nuxtjs/color-mode                          2.1.1  →                     3.1.8
     @tailwindcss/typography                    ^0.5.7  →                    ^0.5.8
     autoprefixer                              ^10.4.2  →                  ^10.4.13
     core-js                                   ^3.15.1  →                   ^3.26.1
     dayjs                                     ^1.10.8  →                   ^1.11.6
     nuxt                                      ^2.15.7  →                   ^2.15.8
     postcss                                    ^8.4.7  →                   ^8.4.19
     prismjs                                   ^1.28.0  →                   ^1.29.0
     tailwindcss                               ^3.0.23  →                    ^3.2.4
    
    Run ncu -u to upgrade package.json

    四,升级

    输入ncu -u来升级包

    ncu -u
  • react-router-dom版本v6的路由匹配可选参数

    react router v4路由匹配可选参数

    <Route path="detail/:bookid(/:page)" element={<Detail />} />

    react router v5路由匹配可选参数

    <Route path="detail/:bookid/:page?" element={<Detail />} />

    react router v6路由匹配可选参数

    <Route path="detail/:bookid">
        <Route path=":page" element={<Detail />} />
        <Route path="" element={<Detail />} />
    </Route>
  • koa的常用插件

    • bodyparser
    • koa-router
  • next.js如何使用axios请求数据

    next.js官方的demo中使用的fetch来获取异步数据,那么问题来了,如何使用axios请求数据?

    
    export default function Home({articles}) {
      return (
        <div>
          {articles.data.map(item=><div>{item.title}</div>)}
        </div>
      )
    }
    export async function getStaticProps() {
      // Call an external API endpoint to get posts
      const articles = await Axios({
        method: 'get',
        url: '/articlelist?page=1',
      })
    
      return {
        props: {
          articles:articles.data,
        },
      }
    }
    

    常见错误如下:

    Error: Error serializing `.articles` returned from `getStaticProps` in “/”. Reason: `undefined` cannot be serialized as JSON. Please use `null` or omit this value.

    如果 Axios前面忘记写 await 会出现这个错误提示

  • next.js安装antd

    example@example.com
    123-456-7890

    东长安街1号
    北京市东城区,100000