我必须将文件从 API 端点传输到两个不同的存储桶。原始上传是使用:
curl -X PUT -F "data=@sample" "http://localhost:3000/upload/1/1"
Run Code Online (Sandbox Code Playgroud)
文件上传的端点:
curl -X PUT -F "data=@sample" "http://localhost:3000/upload/1/1"
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我使用两个PassThrough流,以便将请求流复制为两个可读流,如该 SO thread 中所建议的。
这段代码保持不变,这里有趣的是uploadToFirstS3和uploadToSecondS3函数。在这个最小的示例中,两者使用不同的配置执行完全相同的操作,我在这里仅使用一个。
什么效果好:
const PassThrough = require('stream').PassThrough;
async function uploadFile (req, res) {
try {
const firstS3Stream = new PassThrough();
const secondS3Stream = new PassThrough();
req.pipe(firstS3Stream);
req.pipe(secondS3Stream);
await Promise.all([
uploadToFirstS3(firstS3Stream),
uploadToSecondS3(secondS3Stream),
]);
return res.end();
} catch (err) {
console.log(err)
return res.status(500).send({ error: 'Unexpected error during file upload' });
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码(基于aws-sdk包)工作正常。我的问题是,我希望它与 …
考虑一下:
import PropTypes from 'prop-types';
[...]
Component.propTypes = {
someProp: PropTypes.array,
}
Run Code Online (Sandbox Code Playgroud)
和 :
import PropTypes from 'prop-types';
[...]
Component.propTypes = {
someProp: PropTypes.arrayOf(PropTypes.any),
}
Run Code Online (Sandbox Code Playgroud)
第一个会eslint在编辑器中触发错误:
Prop type 'array' is forbidden eslint(react/forbid-prop-types)
但是,如果不遵守条件,它们都会触发相同的错误,并且根据文档,它的行为应该完全相同。
这两个验证之间有什么区别吗?
(我可以忽略这个错误吗?)
我目前正在尝试将一些代码从 javascript 迁移到 typescript。此代码使用knex包。我可以使用 来构建和运行它tsc,但我想使用它esbuild(为了更快的构建)。
我用以下方法构建:
npx esbuild index.ts --bundle --platform=node --sourcemap=external --outfile=dist/index.js
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行编译后的代码时,我得到:
Cannot find module '../../dialects/mysql/index.js'
Run Code Online (Sandbox Code Playgroud)
我不知道这个dialect目录是什么,也找不到任何有关它的文档。我看了一下这个SO问题,但无法真正理解其中的代码,并且错误似乎更多是关于browserified.
这是我用来重现错误的代码:
Cannot find module '../../dialects/mysql/index.js'
Run Code Online (Sandbox Code Playgroud)
有趣的是,仅使用mysqlwithout 包knex可以很好地与tsc和一起使用esbuild。
由于某种原因,只有构建esbuild失败。我首先以为我错过了一个包,然后我安装了@types/node和@types/mysql但它没有解决我的问题。
如果有帮助,我使用以下内容tsconfig.json:
import Knex from 'knex';
const knex = Knex({
client: 'mysql',
connection: {
port: 3306,
host: 'localhost',
database: 'database',
user: 'user',
password: 'password',
charset: 'utf8mb4', …Run Code Online (Sandbox Code Playgroud)