小编Moh*_*waj的帖子

仅允许Joi架构中的键的特定值

有没有其他方法可以在Joi验证模式中为关键的期望正则表达式模式设置特定值?

我的示例架构:

const schema = joi.object().keys({
    query: joi.object().keys({
        // allow only apple and banana
        id: joi.string().regex(/^(apple|banana)$/).required(),
    }).required(),
})
Run Code Online (Sandbox Code Playgroud)

javascript joi

25
推荐指数
2
解决办法
1万
查看次数

NestJS - 如何在主应用程序模块文件中使用 .env 变量进行数据库连接

我正在开发我的第一个 NestJS 应用程序,它在app.module.ts.

但是根据我们的要求,我不得不从环境文件中选择数据库配置值。为此,我遵循了 nestjs 文档网站上的配置文档 - https://docs.nestjs.com/techniques/configuration

但问题是我需要在同一个文件中使用 .env 变量进行数据库连接,这是失败的。

这是我运行良好的原始代码:

@Module({
  imports: [
    MongooseModule.forRoot(`mongodb+srv://myusername:mypassword@myhost.net?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' }),
    ProductModule,
    CategoryModule,
  ],
  controllers: [
    AppController,
    HealthCheckController,
  ],
  providers: [AppService, CustomLogger],
})
Run Code Online (Sandbox Code Playgroud)

现在,我想从.ENV文件,这是喜欢挑选那些DB值local.envdev.env取决于环境等。现在,我的这段代码不起作用:

@Module({
  imports: [
    ConfigModule.forRoot({ envFilePath: `${process.env.NODE_ENV}.env` }),
    MongooseModule.forRoot(`mongodb+srv://${ConfigModule.get('DB_USER')}:${ConfigModule.get('DB_PASS')}@myhost.net?retryWrites=true&w=majority&db=dbname`, { useNewUrlParser: true, dbName: 'dbname' }),
    ProductModule,
    CategoryModule,
  ],
  controllers: [
    AppController,
    HealthCheckController,
  ],
  providers: [AppService, CustomLogger],
})
Run Code Online (Sandbox Code Playgroud)

javascript environment-variables node.js nestjs dotenv

23
推荐指数
5
解决办法
2万
查看次数

Bx滑块 - 使用全宽旋转木马时显示极右侧的部分滑块

我使用bx滑块在我的nodejs网站上运行滑块.这是我的代码:

$(document).ready(function(){
    $(".bxslider").bxSlider({
        minSlides: 1,
        maxSlides: 40,
        slideWidth: 300,
        slideMargin: 40,
        moveSlides: 1
    });
});//document ready
Run Code Online (Sandbox Code Playgroud)

由于滑块需要100%流体宽度,我设置maxSlides为足够大的数字(此处为40).这使滑块以流动的方式扩展到整个宽度.但现在的问题是,由于滑块宽度是流动的,在某些宽度处,最右边的可见滑块仅部分显示.我想要它显示这个完整的幻灯片,或者如果它在当前视口中不完全可见则保留它.

css jquery bxslider

8
推荐指数
1
解决办法
2088
查看次数

如何使用 DEBUG 选项启动 pm2 进程

我有一个快速应用程序,我在终端中使用以下命令启动它以启用其中的调试日志:

DEBUG=custom:* npm start (on Ubuntu)
SET DEBUG=custom:* & npm start (on Windows)
Run Code Online (Sandbox Code Playgroud)

在生产服务器上,我使用以下命令通过 PM2 启动应用程序:

pm2 start bin/www -i 0
Run Code Online (Sandbox Code Playgroud)

但这不会debug在我的代码中启用日志,因此调试语句不会添加到日志中,仅console.error()添加到日志文件中。DEBUG=custom:*使用 PM2 启动我的应用程序时如何传递该选项?

node.js express pm2

5
推荐指数
1
解决办法
9614
查看次数

“mocha”未被识别为内部或外部命令 - mocha 未通过 supertest 自动安装

我需要对用 NodeJS 编写的其余 api 进行单元测试。为此,我需要使用supertest npm 包。我正在按照这篇教程文章来实现单元测试功能。

现在,在本文中提到它mocha已经包含在supertest其自身中,因此无需单独安装它。所以,我只supertest使用 -进行安装npm install --save-dev supertest

但是,当我在我的package.json-中添加这一行"test": "mocha"并运行时npm test,它会给出错误消息'mocha' is not recognized as an internal or external command。我需要运行npm install --save-dev mocha才能使其成功运行。但为什么我需要mocha单独包含,如果这就是它应该如何运行,为什么本文或 npm 主页上没有提到它supertest

javascript mocha.js node.js npm supertest

5
推荐指数
1
解决办法
9765
查看次数

jest.setTimeout 在 setupFiles 中不起作用

我正在使用 Jest 来测试我的 rest API。我的大多数 API 端点需要超过 5 秒才能返回,因此我需要增加 Jest 中指定的默认超时 5000 毫秒。

我有 2 个测试文件,假设: foo.test.js bar.test.js

现在,我可以通过以下两种方式摆脱超时错误:

  1. 将超时值设置为大于 5000,作为testit方法的第三个参数。这工作正常,但我需要更新所有现有的测试用例。
  2. jest.setTimeout(20000);在我的每个测试文件的顶部添加。这也很好用。但是,它仍然需要我更新所有现有的测试文件。

我发现我可以改为jest.setTimeout(20000);在单独的文件中指定,并setupFiles在 package.json 中的 jest 配置选项中指向那个。我这样做了,但是超过 5000 毫秒的超时错误又开始出现了。我的 setupFile 被正确加载,我通过添加一些console.log语句来检查它。但它似乎jest.setTimeout(20000)对测试用例没有任何影响。

javascript node.js jestjs

5
推荐指数
1
解决办法
1300
查看次数

如何在不旋转整个画布的情况下旋转三角形?

我是新手,<canvas>在数学方面很糟糕。我正在使用此函数在画布上绘制一个简单的等边三角形,该函数已从其他人那里借来了代码(不要讨厌我):

drawTriangle(PosX, PosY, SideLength, Orientation) {
    context.beginPath();

    var sides = 3;

    var a = ((Math.PI * 2) / sides);

    context.moveTo(PosX + SideLength, PosY);

    for (var i = 1; i < sides + 1; i++) {
        context.lineTo(PosX + SideLength * Math.cos(a*i), PosY + SideLength * Math.sin(a*i));
    }

    context.closePath();

    return true;
}
Run Code Online (Sandbox Code Playgroud)

该函数仅知道三角形的中心坐标和指向三角形的方向。

当前,它成功绘制了三角形,但“指向”东方。

如何使用Orientation参数(度)旋转三角形,而不像其他答案所示旋转整个画布?

javascript html5 rotation html5-canvas

4
推荐指数
2
解决办法
1912
查看次数

找不到Socket.io 404

出于某种原因,当我查看chrome开发者工具网络时,我不断发现" http://127.0.0.1:3000/socket.io/socket.io.js"404.我花了一个多小时试图理解为什么这不起作用,因为它之前工作正常,我不认为我改变了什么.

服务器:

var express = require('express'),
    session = require('express-session');

var app = express();

var server = require('http').Server(app);
var io = require('socket.io')(server);
var MongoStore = require('connect-mongo')(session);

var sessionMiddleware = session({
    resave: false,
    saveUninitialized: false,
    secret: 'secret',
    store: new MongoStore({url: "mongodb://localhost:27017/database"})
});

app.use(sessionMiddleware);



io.use(sessionMiddleware, function(socket, next) {
    sessionMiddleware(socket.request, socket.request.res, next);
});

io.sockets.on('connection', function (socket) {
    console.log("Socket connected");
});

app.set('view engine', 'pug');
app.use(express.static(__dirname + '/public'));

app.get('/', function(req, res) {
   res.render('index');
});

app.listen(3000);
console.log('listening');
Run Code Online (Sandbox Code Playgroud)

帕格档案:

html
    head
        script(src="http://127.0.0.1:3000/socket.io/socket.io.js")
        script(type='text/javascript', src='../javascripts/chat.js')
    body
Run Code Online (Sandbox Code Playgroud)

客户端javascript: …

javascript node.js socket.io pug

3
推荐指数
1
解决办法
2148
查看次数

为什么`null + 1 = 1`但是'undefined + 1 = NaN`?

null + 1 = 1

undefined + 1 = NaN

我无法理解这背后的逻辑是什么.两者都不应该返回相同的结果吗?

javascript nan undefined

3
推荐指数
1
解决办法
510
查看次数

为什么`varexports = module.exports = {};`有效,而`letexports = module.exports = {};无效?

在我的项目的代码优化期间,我用替换了所有varkeyword 实例,let因为我认为没有特殊用途var。我在所有文件中都执行了“查找并替换”操作。

在某些自定义模块中,我使用了以下语句:

var exports = module.exports = {};
Run Code Online (Sandbox Code Playgroud)

效果很好。

现在,将其替换为后let,它变为:

let exports = module.exports = {};
Run Code Online (Sandbox Code Playgroud)

现在无法正常工作并出现错误

语法错误:标识符'exports'已经被声明

尽管我可以使用var并避免这个问题,但我仍然想知道背后的原因是什么。

编辑:我没有let exports = <something>;在同一模块文件中的任何地方使用过。所以这是我声明exports变量的唯一语句。

javascript node.js express ecmascript-6

2
推荐指数
1
解决办法
593
查看次数