我有一个 monorepo,在自己的文件夹中包含一些函数。我想创建一个具有实用功能的公共层,我可以require/import在本地使用它,也可以在部署到云后使用它。我想添加一个layers/目录来执行此操作,文件夹结构如下所示:
A
|- node_modules/
|- package.json
|- index.js
B
|- node_modules/
|- package.json
|- index.js
layers
|- nodejs
|- node_modules
|- package.json
|- util.js
Run Code Online (Sandbox Code Playgroud)
我没有设置上面的文件夹结构,并且可以接受它的更改。
目前,我只有A和 以及B它们自己的独立依赖层(使用 编排terraform),并且它们在本地工作和部署都很好。
引入通用实用程序层后,问题是我可以在本地要求/导入,但在云中就不一样了(/opt/nodejs/*),但如果我将其更改为在云上工作,它将无法工作本地。
我没有使用该serverless框架。
我有一个正在运行的 docker 版本,当我输入带有路径别名的绝对路径时,它突然开始抱怨module not found, can\'t resolve \'ComponentName\'
它将失败于pnpm run build,但是当我在本地运行它时,它工作正常。
tsconfig.json
\n{\n "compilerOptions": {\n "target": "es5",\n "lib": [\n "dom",\n "dom.iterable",\n "esnext"\n ],\n "allowJs": true,\n "skipLibCheck": true,\n "strict": true,\n "forceConsistentCasingInFileNames": true,\n "noEmit": true,\n "esModuleInterop": true,\n "module": "esnext",\n "moduleResolution": "node",\n "resolveJsonModule": true,\n "isolatedModules": true,\n "jsx": "preserve",\n "incremental": true,\n "plugins": [\n {\n "name": "next"\n }\n ],\n "baseUrl": ".",\n "paths": {\n "~/*": [\n "./src/*"\n ]\n }\n },\n "include": [\n "next-env.d.ts",\n "**/*.ts",\n "**/*.tsx",\n ".next/types/**/*.ts"\n ],\n "exclude": [\n "node_modules"\n …Run Code Online (Sandbox Code Playgroud) 使用 Clerk Auth,我可以使用 Next.js 13 中间件实现有效的登录/注册流程。
当用户注册时,我想向数据库Users表添加一行。
中间件的问题是它在每个请求上运行,我不想调用我的数据库来检查用户是否存在,以便我可以创建记录。
Clerk 是否会返回任何可用于区分注册与正常请求的数据?
不是重复的:我可以很好地终止进程,我想知道如何在进程内检测它正在被终止,并优雅地关闭。
我有一个 CLI 工具来生成和终止子 node.js 进程。演示代码包含在这三个文件中:
spawn.js-- 将生成child.js脚本,分离。为了简单起见,我将孩子的管道传输stdio到一个out.log文件
child.js-- 写入文件的简单计数器,使用该readline方法检测 Windows 中的模拟 SIGINT
kill.jsprocess.kill()--使用子进程的 PID调用 a
生成.js
'use strict';
var spawn = require('child_process').spawn;
var fs = require('fs');
var path = require('path');
var childFilePath = path.resolve(__dirname, 'child.js');
var out = fs.openSync('./out.log', 'a');
var err = fs.openSync('./out.log', 'a');
var options = {
detached: true,
stdio: ['ignore', out, err],
};
var child = spawn(process.execPath, [childFilePath], options); …Run Code Online (Sandbox Code Playgroud) 在 TypeScript 中,可以检查并警告开发人员是否同步调用函数async。
对于那些想要减少开销并使用 Node.js v9.0+ 的人来说,如果我们有这样的东西,是否可以让任何 linter 给我们一个警告?
async function foo() {
return;
}
var result = foo(); // warning right here because there is no await
Run Code Online (Sandbox Code Playgroud)
原因是,除非我们显式命名它fooAsync、查看实现或假设一切都是异步的,否则函数是否返回承诺/是否等待并不明显。或者也许开发人员搞砸了并且忘记写了await。
只是想要一个警告来捕获开发时而不是运行时的错误。
有人告诉我,我的脚本阻塞了客户站点上的主线程。
它被标记为<script async...>所以它不应该是一个网络块。
我运行了 Chrome 分析器,尽管在谷歌上搜索了解释,但我真的不明白我在看什么。
不明白整个蓝块的哪一部分是“线程阻塞部分”
从第一张图像开始,“细线”从大约 500 毫秒到大约 900 毫秒,大约是 400 毫秒的时间,但在自下而上的表中,它表示“评估脚本”的总时间为 184.5 毫秒。
那么我可以假设脚本的“阻塞”时间应该取自自下而上的表,达到 184.5 毫秒?
javascript performance google-chrome google-chrome-devtools chrome-profile
假设您有一个非常长的泛型函数要在多个模式上使用,并且每个模式对于您要查询的字段都有不同的名称(可能还有不同类型的值 - 字符串,数字等)
function foo (field, value){
Model.find({field: value});
}
foo('idfoo', 'xx');
foo('idbar', 5);
Run Code Online (Sandbox Code Playgroud)
我试图做这样的事情作为猫鼬的概念证明,它似乎只有你使用变量值,但你不能用于字段.
这不可能吗?
页面上有一条注释aws_s3_bucket_object说它已被弃用并可以使用aws_s3_bucket:
aws_s3_bucket_object 资源已弃用,并将在未来版本中删除!请改用 aws_s3_object,其中将添加新功能和修复。在配置中将 aws_s3_bucket_object 替换为 aws_s3_object 时,在下次应用时,Terraform 将重新创建该对象。如果您不想让 Terraform 重新创建对象,请使用 aws_s3_object 导入对象。
当我转到该aws_s3_bucket页面时,没有如何上传文件的示例,只有如何创建存储桶。网上的一些文章也指出使用aws_s3_bucket创建存储桶但仍然使用aws_s3_bucket_object上传文件,这仍然是正确的做法吗?
我正在做一个简单的findOne()并将doc保存在其中,但由于某种原因它无法正常工作.我输出了对象并且控制台中的输出是正确的,但是在save()之后,我看看我的mongodb并没有保存.我不确定我是否应该设置某种选项.这是我的代码:
var1 = "data1";
var2 = "data1field1";
Model.findOne({'_id':some_id}).exec(function(err, doc) {
if (err) return console.error(err);
(doc.data[var1][var2][0] += 1;
console.log(doc.data.data1);
doc.save(function (err) {
if(err){console.log(err);}
console.log('success');
});
});
Run Code Online (Sandbox Code Playgroud)
这是我的架构:
var modelSchema = new mongoose.Schema({
'data':{
'data1':{
'data1field1':[{type: Number}],
'data1field2':[{type: Number}]
},
'data2':{
'data2field1':[{type: Number}],
'data2field2':[{type: Number}]
}
}
});
var Model = mongoose.model('model', modelSchema);
module.exports.Model = Model;
Run Code Online (Sandbox Code Playgroud)
假设我创建了这个模式的实例,其中data.data1.data1field1是两个数字[0,0]的数组,"console.log(doc.data.data1);"的输出 将会:
{
data1field1:[1,0],
data1field2:[0,0] }
success
Run Code Online (Sandbox Code Playgroud)
但是保存不会发生.我是mongoose/mongodb的新手,所以我可能缺少一个简单的基本内容.
注意:我不能使用Model.update({},{$ inc {}}),因为我使用变量来选择要更改的数据对象,并且由于.update()中的文字,这是不可能的.
谢谢.
我想使用created_at列查询年龄小于 48 小时的所有记录。
在 PostgreSQL 中,您可以执行以下操作:
SELECT * from "media" WHERE updated_at >= now() - '48 hour'::INTERVAL;
我们如何在 objection.js/knex.js 中编写它而不进入原始查询(或者可能使用一些原始查询来实现部分等式)?
我有工作逻辑:
const { raw } = require('objection');
return SomeModel.query()
.andWhere(raw('updated_at >= now() - \'48 HOUR\'::INTERVAL'))
.orderBy('updated_at')
.first();
Run Code Online (Sandbox Code Playgroud)
但我想尽可能避免使用该raw功能,例如:
return SomeModel.query()
.where('updated_at', '>=', 'i have no idea what to put here')
.orderBy('updated_at')
.first();
Run Code Online (Sandbox Code Playgroud)
一开始想到,既然updated_at是一个new Date().toISOString()我也许可以做一些类似的事情< new Date(new Date().getTime()-48*60*60*1000).toISOString()
但我不完全确定 Postgres 比较器将如何处理这个问题。
我试图创建一个winston用作日志记录框架的日志记录模块。它允许我指定颜色,如果传输为Console,则非常好,但是如果我要定义两个传输,一个Console,一个File,则实际上会将终端格式化程序字符串保存在文本中,并将其保存在文件中。
const { addColors, createLogger, format, transports } = require('winston');
const { combine, colorize, printf, timestamp } = format;
const logFormat = printf((info) => {
return `[${info.timestamp}] ${info.level}: ${info.message}`;
});
const rawFormat = printf((info) => {
return `[${info.timestamp}] ${info.level}: ${info.message}`;
});
const config = require('../config');
const logger = createLogger({
level: config.DEBUG,
format: combine(
colorize(),
timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
logFormat,
),
transports: [
new transports.File({
filename: 'combined.log',
}),
new transports.Console({ format: combine(timestamp(), …Run Code Online (Sandbox Code Playgroud) node.js ×6
javascript ×5
mongoose ×2
next.js ×2
amazon-s3 ×1
async-await ×1
aws-lambda ×1
clerk ×1
docker ×1
dockerfile ×1
eslint ×1
express ×1
find ×1
kill ×1
knex.js ×1
logging ×1
mongodb ×1
next.js13 ×1
oauth ×1
objection.js ×1
orm ×1
performance ×1
postgresql ×1
reactjs ×1
serverless ×1
terraform ×1
typescript ×1
windows ×1
winston ×1