我正在尝试将可读流作为响应发送给 CloudFlare Worker。我正在使用ytdl-core
npm 模块来获取可读流。
这是工人的入口点。
const getAudio = (videoID, quality = "lowest") => {
const audioStream = ytdl("http://www.youtube.com/watch?v=" + videoID, {
quality,
filter: "audioonly",
});
audioStream.on("error", (e) => {
console.log(`Error: ${e.message}`);
});
return audioStream;
};
const handleRequest = (request) => {
const url = new URL(request.url);
const videoID = url.searchParams.get("v");
if (typeof videoID === "string") {
const nodeStream = getAudio(videoID);
const webStream = nodeToWebStream(nodeStream);
let { readable, writable } = new TransformStream();
webStream.pipeTo(writable);
return new Response(readable, webStream);
} else return new Response("Hello World");
};
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
这是 Webpack 配置
const webpack = require("webpack");
module.exports = {
target: "webworker",
entry: "./index.js",
plugins: [
new webpack.ProvidePlugin({
ReadableStream: ["web-streams-polyfill/ponyfill", "ReadableStream"],
ytdl: "ytdl-core",
nodeToWebStream: "readable-stream-node-to-web",
}),
],
};
我正在将 Nodejs 可读流转换为 Web 可读流,然后将其通过管道传输到Cloudflare Docs中提到的转换流的可写流部分。但是我遇到了这样的错误:
TypeError: ReadableStream.prototype.pipeTo's first argument must be a WritableStream
at e.pipeTo (worker.js:11:89436)
at r (worker.js:9:33134)
at worker.js:9:33241 at line 10, col 89434
{
"exceptionDetails": {
"columnNumber": 89434,
"exception": {
"className": "TypeError",
"description": "TypeError: ReadableStream.prototype.pipeTo's first argument must be a WritableStream\n at e.pipeTo (worker.js:11:89436)\n at r (worker.js:9:33134)\n at worker.js:9:33241",
"preview": null,
"subtype": "error",
"type": "object",
"value": null
},
"lineNumber": 10,
"text": "Uncaught (in promise)",
"url": "worker.js"
},
"timestamp": 1636696072821
}
TypeError: Cannot read properties of undefined (reading 'protocol')
at Object.u.request (worker.js:9:11037)
at Object.o.request (worker.js:11:21923)
at O (worker.js:8:27433)
at p.run (worker.js:1:2260)
at d (worker.js:1:1754) at line 8, col 11035
{
"exceptionDetails": {
"columnNumber": 11035,
"exception": {
"className": "TypeError",
"description": "TypeError: Cannot read properties of undefined (reading 'protocol')\n at Object.u.request (worker.js:9:11037)\n at Object.o.request (worker.js:11:21923)\n at O (worker.js:8:27433)\n at p.run (worker.js:1:2260)\n at d (worker.js:1:1754)",
"preview": null,
"subtype": "error",
"type": "object",
"value": null
},
"lineNumber": 8,
"text": "Uncaught",
"url": "worker.js"
},
"timestamp": 1636696072821
}
TypeError: Cannot read properties of undefined (reading 'protocol') at line 0, col -2
{
"exceptionDetails": {
"columnNumber": -2,
"exception": {
"className": "TypeError",
"description": "TypeError: Cannot read properties of undefined (reading 'protocol')",
"preview": null,
"subtype": "error",
"type": "object",
"value": null
},
"lineNumber": 0,
"text": "Uncaught (async)",
"url": "undefined"
},
"timestamp": 1636696072821
}
TypeError: Cannot read properties of undefined (reading 'protocol')
at Object.u.request (worker.js:9:11037)
at Object.o.request (worker.js:11:21923)
at O (worker.js:8:27433)
at p.run (worker.js:1:2260)
at d (worker.js:1:1754)
at f (worker.js:1:1662) at line 8, col 11035
{
"exceptionDetails": {
"columnNumber": 11035,
"exception": {
"className": "TypeError",
"description": "TypeError: Cannot read properties of undefined (reading 'protocol')\n at Object.u.request (worker.js:9:11037)\n at Object.o.request (worker.js:11:21923)\n at O (worker.js:8:27433)\n at p.run (worker.js:1:2260)\n at d (worker.js:1:1754)\n at f (worker.js:1:1662)",
"preview": null,
"subtype": "error",
"type": "object",
"value": null
},
"lineNumber": 8,
"text": "Uncaught",
"url": "worker.js"
},
"timestamp": 1636696072821
}
TypeError: Cannot read properties of undefined (reading 'protocol') at line 0, col -2
{
"exceptionDetails": {
"columnNumber": -2,
"exception": {
"className": "TypeError",
"description": "TypeError: Cannot read properties of undefined (reading 'protocol')",
"preview": null,
"subtype": "error",
"type": "object",
"value": null
},
"lineNumber": 0,
"text": "Uncaught (async)",
"url": "undefined"
},
"timestamp": 1636696072821
}
Error: The script will never generate a response. at line 0, col -2
{
"exceptionDetails": {
"columnNumber": -2,
"exception": {
"className": "Error",
"description": "Error: The script will never generate a response.",
"preview": {
"description": "Error: The script will never generate a response.",
"entries": null,
"overflow": false,
"properties": [
{
"name": "stack",
"subtype": null,
"type": "string",
"value": "Error: The script will never generate a response.",
"valuePreview": null
},
{
"name": "message",
"subtype": null,
"type": "string",
"value": "The script will never generate a response.",
"valuePreview": null
}
],
"subtype": "error",
"type": "object"
},
"subtype": "error",
"type": "object",
"value": null
},
"lineNumber": 0,
"text": "Uncaught (in response)",
"url": "undefined"
},
"timestamp": 1636696073821
}
任何帮助表示赞赏。