langchain-ai / langchainjs

πŸ¦œπŸ”— Build context-aware reasoning applications πŸ¦œπŸ”—
https://js.langchain.com/docs/
MIT License
11.8k stars 1.97k forks source link

Logged punycode deprecation warning for Node 21 #4678

Closed bakertn closed 3 weeks ago

bakertn commented 4 months ago

Checked other resources

Example Code

This is the sample from your Getting Started Docs that is generating the error.

...typescript import { ChatOpenAI } from "@langchain/openai"; import { ChatPromptTemplate } from "@langchain/core/prompts"; import { StringOutputParser } from "@langchain/core/output_parsers";

const prompt = ChatPromptTemplate.fromMessages([ ["human", "Tell me a short joke about {topic}"], ]); const model = new ChatOpenAI({}); const outputParser = new StringOutputParser();

const chain = prompt.pipe(model).pipe(outputParser);

const response = await chain.invoke({ topic: "ice cream", }); console.log(response); /** ...

Error Message and Stack Trace (if applicable)

(base) PS C:\Users\lbake\VSCode Projects\langchainjs> node --trace-deprecation app.js (node:4792) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead. at node:punycode:3:9 at BuiltinModule.compileForInternalLoader (node:internal/bootstrap/realm:398:7) at BuiltinModule.compileForPublicLoader (node:internal/bootstrap/realm:337:10) at loadBuiltinModule (node:internal/modules/helpers:104:7) at Module._load (node:internal/modules/cjs/loader:999:17) at Module.require (node:internal/modules/cjs/loader:1230:19) at require (node:internal/modules/helpers:179:18) at Object. (C:\Users\lbake\VSCode Projects\langchainjs\node_modules\whatwg-url\lib\url-state-machine.js:2:18) at Module._compile (node:internal/modules/cjs/loader:1368:14) at Module._extensions..js (node:internal/modules/cjs/loader:1426:10) Why did the ice cream cone go to therapy? Because it had too many toppings!

Description

I am getting the same issue as a previous post that is now Closed.

Vanilla getting started code from your lanchain getting started docs. No direct mention of punycode in the sample code.

node v21.7.0 - installed today Just installed langchainjs TODAY. Latest version. Also ran npm update. Completely up to date.

Also ran this to check the whatwg-url

(base) PS C:\Users\lbake\VSCode Projects\langchainjs> npm list whatwg-url your-package-name@1.0.0 C:\Users\lbake\VSCode Projects\LangChainJS └─┬ @langchain/openai@0.0.18 └─┬ openai@4.28.4 └─┬ node-fetch@2.7.0 └── whatwg-url@5.0.0

So I echo the previous closed post. Why is there a deprecated library in this project? Please fix ASAP. Extremely annoying.

New install of everything today, NODE, LangChainJS, etc. New project from scratch...

System Info

node v21.7.0 - installed today Just installed langchainjs TODAY. Latest version. Also ran npm update. Completely up to date.

Also ran this to check the whatwg-url

(base) PS C:\Users\lbake\VSCode Projects\langchainjs> npm list whatwg-url your-package-name@1.0.0 C:\Users\lbake\VSCode Projects\LangChainJS └─┬ @langchain/openai@0.0.18 └─┬ openai@4.28.4 └─┬ node-fetch@2.7.0 └── whatwg-url@5.0.0

windows 11

require: './chat_models/googlevertexai/web.cjs' }, './chat_models/googlepalm': { types: { import: './chat_models/googlepalm.d.ts', require: './chat_models/googlepalm.d.cts', default: './chat_models/googlepalm.d.ts' }, import: './chat_models/googlepalm.js', require: './chat_models/googlepalm.cjs' }, './chat_models/fireworks': { types: { import: './chat_models/fireworks.d.ts', require: './chat_models/fireworks.d.cts', default: './chat_models/fireworks.d.ts' }, import: './chat_models/fireworks.js', require: './chat_models/fireworks.cjs' }, './chat_models/baiduwenxin': { types: { import: './chat_models/baiduwenxin.d.ts', require: './chat_models/baiduwenxin.d.cts', default: './chat_models/baiduwenxin.d.ts' }, import: './chat_models/baiduwenxin.js', require: './chat_models/baiduwenxin.cjs' }, './chat_models/iflytek_xinghuo': { types: { import: './chat_models/iflytek_xinghuo.d.ts', require: './chat_models/iflytek_xinghuo.d.cts', default: './chat_models/iflytek_xinghuo.d.ts' }, import: './chat_models/iflytek_xinghuo.js', require: './chat_models/iflytek_xinghuo.cjs' }, './chat_models/iflytek_xinghuo/web': { types: { import: './chat_models/iflytek_xinghuo/web.d.ts', require: './chat_models/iflytek_xinghuo/web.d.cts', default: './chat_models/iflytek_xinghuo/web.d.ts' }, import: './chat_models/iflytek_xinghuo/web.js', require: './chat_models/iflytek_xinghuo/web.cjs' }, './chat_models/ollama': { types: { import: './chat_models/ollama.d.ts', require: './chat_models/ollama.d.cts', default: './chat_models/ollama.d.ts' }, import: './chat_models/ollama.js', require: './chat_models/ollama.cjs' }, './chat_models/minimax': { types: { import: './chat_models/minimax.d.ts', require: './chat_models/minimax.d.cts', default: './chat_models/minimax.d.ts' }, import: './chat_models/minimax.js', require: './chat_models/minimax.cjs' }, './chat_models/llama_cpp': { types: { import: './chat_models/llama_cpp.d.ts', require: './chat_models/llama_cpp.d.cts', default: './chat_models/llama_cpp.d.ts' }, import: './chat_models/llama_cpp.js', require: './chat_models/llama_cpp.cjs' }, './chat_models/yandex': { types: { import: './chat_models/yandex.d.ts', require: './chat_models/yandex.d.cts', default: './chat_models/yandex.d.ts' }, import: './chat_models/yandex.js', require: './chat_models/yandex.cjs' }, './chat_models/fake': { types: { import: './chat_models/fake.d.ts', require: './chat_models/fake.d.cts', default: './chat_models/fake.d.ts' }, import: './chat_models/fake.js', require: './chat_models/fake.cjs' }, './schema': { types: { import: './schema.d.ts', require: './schema.d.cts', default: './schema.d.ts' }, import: './schema.js', require: './schema.cjs' }, './schema/document': { types: { import: './schema/document.d.ts', require: './schema/document.d.cts', default: './schema/document.d.ts' }, import: './schema/document.js', require: './schema/document.cjs' }, './schema/output_parser': { types: { import: './schema/output_parser.d.ts', require: './schema/output_parser.d.cts', default: './schema/output_parser.d.ts' }, import: './schema/output_parser.js', require: './schema/output_parser.cjs' }, './schema/prompt_template': { types: { import: './schema/prompt_template.d.ts', require: './schema/prompt_template.d.cts', default: './schema/prompt_template.d.ts' }, import: './schema/prompt_template.js', require: './schema/prompt_template.cjs' }, './schema/query_constructor': { types: { import: './schema/query_constructor.d.ts', require: './schema/query_constructor.d.cts', default: './schema/query_constructor.d.ts' }, import: './schema/query_constructor.js', require: './schema/query_constructor.cjs' }, './schema/retriever': { types: { import: './schema/retriever.d.ts', require: './schema/retriever.d.cts', default: './schema/retriever.d.ts' }, import: './schema/retriever.js', require: './schema/retriever.cjs' }, './schema/runnable': { types: { import: './schema/runnable.d.ts', require: './schema/runnable.d.cts', default: './schema/runnable.d.ts' }, import: './schema/runnable.js', require: './schema/runnable.cjs' }, './schema/storage': { types: { import: './schema/storage.d.ts', require: './schema/storage.d.cts', default: './schema/storage.d.ts' }, import: './schema/storage.js', require: './schema/storage.cjs' }, './sql_db': { types: { import: './sql_db.d.ts', require: './sql_db.d.cts', default: './sql_db.d.ts' }, import: './sql_db.js', require: './sql_db.cjs' }, './callbacks': { types: { import: './callbacks.d.ts', require: './callbacks.d.cts', default: './callbacks.d.ts' }, import: './callbacks.js', require: './callbacks.cjs' }, './callbacks/handlers/llmonitor': { types: { import: './callbacks/handlers/llmonitor.d.ts', require: './callbacks/handlers/llmonitor.d.cts', default: './callbacks/handlers/llmonitor.d.ts' }, import: './callbacks/handlers/llmonitor.js', require: './callbacks/handlers/llmonitor.cjs' }, './output_parsers': { types: { import: './output_parsers.d.ts', require: './output_parsers.d.cts', default: './output_parsers.d.ts' }, import: './output_parsers.js', require: './output_parsers.cjs' }, './output_parsers/expression': { types: { import: './output_parsers/expression.d.ts', require: './output_parsers/expression.d.cts', default: './output_parsers/expression.d.ts' }, import: './output_parsers/expression.js', require: './output_parsers/expression.cjs' }, './retrievers/amazon_kendra': { types: { import: './retrievers/amazon_kendra.d.ts', require: './retrievers/amazon_kendra.d.cts', default: './retrievers/amazon_kendra.d.ts' }, import: './retrievers/amazon_kendra.js', require: './retrievers/amazon_kendra.cjs' }, './retrievers/remote': { types: { import: './retrievers/remote.d.ts', require: './retrievers/remote.d.cts', default: './retrievers/remote.d.ts' }, import: './retrievers/remote.js', require: './retrievers/remote.cjs' }, './retrievers/supabase': { types: { import: './retrievers/supabase.d.ts', require: './retrievers/supabase.d.cts', default: './retrievers/supabase.d.ts' }, import: './retrievers/supabase.js', require: './retrievers/supabase.cjs' }, './retrievers/zep': { types: { import: './retrievers/zep.d.ts', require: './retrievers/zep.d.cts', default: './retrievers/zep.d.ts' }, import: './retrievers/zep.js', require: './retrievers/zep.cjs' }, './retrievers/metal': { types: { import: './retrievers/metal.d.ts', require: './retrievers/metal.d.cts', default: './retrievers/metal.d.ts' }, import: './retrievers/metal.js', require: './retrievers/metal.cjs' }, './retrievers/chaindesk': { types: { import: './retrievers/chaindesk.d.ts', require: './retrievers/chaindesk.d.cts', default: './retrievers/chaindesk.d.ts' }, import: './retrievers/chaindesk.js', require: './retrievers/chaindesk.cjs' }, './retrievers/databerry': { types: { import: './retrievers/databerry.d.ts', require: './retrievers/databerry.d.cts', default: './retrievers/databerry.d.ts' }, import: './retrievers/databerry.js', require: './retrievers/databerry.cjs' }, './retrievers/contextual_compression': { types: { import: './retrievers/contextual_compression.d.ts', require: './retrievers/contextual_compression.d.cts', default: './retrievers/contextual_compression.d.ts' }, import: './retrievers/contextual_compression.js', require: './retrievers/contextual_compression.cjs' }, './retrievers/document_compressors': { types: { import: './retrievers/document_compressors.d.ts', require: './retrievers/document_compressors.d.cts', default: './retrievers/document_compressors.d.ts' }, import: './retrievers/document_compressors.js', require: './retrievers/document_compressors.cjs' }, './retrievers/multi_query': { types: { import: './retrievers/multi_query.d.ts', require: './retrievers/multi_query.d.cts', default: './retrievers/multi_query.d.ts' }, import: './retrievers/multi_query.js', require: './retrievers/multi_query.cjs' }, './retrievers/multi_vector': { types: { import: './retrievers/multi_vector.d.ts', require: './retrievers/multi_vector.d.cts', default: './retrievers/multi_vector.d.ts' }, import: './retrievers/multi_vector.js', require: './retrievers/multi_vector.cjs' }, './retrievers/parent_document': { types: { import: './retrievers/parent_document.d.ts', require: './retrievers/parent_document.d.cts', default: './retrievers/parent_document.d.ts' }, import: './retrievers/parent_document.js', require: './retrievers/parent_document.cjs' }, './retrievers/vectara_summary': { types: { import: './retrievers/vectara_summary.d.ts', require: './retrievers/vectara_summary.d.cts', default: './retrievers/vectara_summary.d.ts' }, import: './retrievers/vectara_summary.js', require: './retrievers/vectara_summary.cjs' }, './retrievers/tavily_search_api': { types: { import: './retrievers/tavily_search_api.d.ts', require: './retrievers/tavily_search_api.d.cts', default: './retrievers/tavily_search_api.d.ts' }, import: './retrievers/tavily_search_api.js', require: './retrievers/tavily_search_api.cjs' }, './retrievers/time_weighted': { types: { import: './retrievers/time_weighted.d.ts', require: './retrievers/time_weighted.d.cts', default: './retrievers/time_weighted.d.ts' }, import: './retrievers/time_weighted.js', require: './retrievers/time_weighted.cjs' }, './retrievers/document_compressors/chain_extract': { types: { import: './retrievers/document_compressors/chain_extract.d.ts', require: './retrievers/document_compressors/chain_extract.d.cts', default: './retrievers/document_compressors/chain_extract.d.ts' }, import: './retrievers/document_compressors/chain_extract.js', require: './retrievers/document_compressors/chain_extract.cjs' }, './retrievers/document_compressors/embeddings_filter': { types: { import: './retrievers/document_compressors/embeddings_filter.d.ts', require: './retrievers/document_compressors/embeddings_filter.d.cts', default: './retrievers/document_compressors/embeddings_filter.d.ts' }, import: './retrievers/document_compressors/embeddings_filter.js', require: './retrievers/document_compressors/embeddings_filter.cjs' }, './retrievers/hyde': { types: { import: './retrievers/hyde.d.ts', require: './retrievers/hyde.d.cts', default: './retrievers/hyde.d.ts' }, import: './retrievers/hyde.js', require: './retrievers/hyde.cjs' }, './retrievers/score_threshold': { types: { import: './retrievers/score_threshold.d.ts', require: './retrievers/score_threshold.d.cts', default: './retrievers/score_threshold.d.ts' }, import: './retrievers/score_threshold.js', require: './retrievers/score_threshold.cjs' }, './retrievers/self_query': { types: { import: './retrievers/self_query.d.ts', require: './retrievers/self_query.d.cts', default: './retrievers/self_query.d.ts' }, import: './retrievers/self_query.js', require: './retrievers/self_query.cjs' }, './retrievers/self_query/chroma': { types: { import: './retrievers/self_query/chroma.d.ts', require: './retrievers/self_query/chroma.d.cts', default: './retrievers/self_query/chroma.d.ts' }, import: './retrievers/self_query/chroma.js', require: './retrievers/self_query/chroma.cjs' }, './retrievers/self_query/functional': { types: { import: './retrievers/self_query/functional.d.ts', require: './retrievers/self_query/functional.d.cts', default: './retrievers/self_query/functional.d.ts' }, import: './retrievers/self_query/functional.js', require: './retrievers/self_query/functional.cjs' }, './retrievers/self_query/pinecone': { types: { import: './retrievers/self_query/pinecone.d.ts', require: './retrievers/self_query/pinecone.d.cts', default: './retrievers/self_query/pinecone.d.ts' }, import: './retrievers/self_query/pinecone.js', require: './retrievers/self_query/pinecone.cjs' }, './retrievers/self_query/supabase': { types: { import: './retrievers/self_query/supabase.d.ts', require: './retrievers/self_query/supabase.d.cts', default: './retrievers/self_query/supabase.d.ts' }, import: './retrievers/self_query/supabase.js', require: './retrievers/self_query/supabase.cjs' }, './retrievers/self_query/weaviate': { types: { import: './retrievers/self_query/weaviate.d.ts', require: './retrievers/self_query/weaviate.d.cts', default: './retrievers/self_query/weaviate.d.ts' }, import: './retrievers/self_query/weaviate.js', require: './retrievers/self_query/weaviate.cjs' }, './retrievers/self_query/vectara': { types: { import: './retrievers/self_query/vectara.d.ts', require: './retrievers/self_query/vectara.d.cts', default: './retrievers/self_query/vectara.d.ts' }, import: './retrievers/self_query/vectara.js', require: './retrievers/self_query/vectara.cjs' }, './retrievers/vespa': { types: { import: './retrievers/vespa.d.ts', require: './retrievers/vespa.d.cts', default: './retrievers/vespa.d.ts' }, import: './retrievers/vespa.js', require: './retrievers/vespa.cjs' }, './retrievers/matryoshka_retriever': { types: { import: './retrievers/matryoshka_retriever.d.ts', require: './retrievers/matryoshka_retriever.d.cts', default: './retrievers/matryoshka_retriever.d.ts' }, import: './retrievers/matryoshka_retriever.js', require: './retrievers/matryoshka_retriever.cjs' }, './cache': { types: { import: './cache.d.ts', require: './cache.d.cts', default: './cache.d.ts' }, import: './cache.js', require: './cache.cjs' }, './cache/cloudflare_kv': { types: { import: './cache/cloudflare_kv.d.ts', require: './cache/cloudflare_kv.d.cts', default: './cache/cloudflare_kv.d.ts' }, import: './cache/cloudflare_kv.js', require: './cache/cloudflare_kv.cjs' }, './cache/momento': { types: { import: './cache/momento.d.ts', require: './cache/momento.d.cts', default: './cache/momento.d.ts' }, import: './cache/momento.js', require: './cache/momento.cjs' }, './cache/redis': { types: { import: './cache/redis.d.ts', require: './cache/redis.d.cts', default: './cache/redis.d.ts' }, import: './cache/redis.js', require: './cache/redis.cjs' }, './cache/ioredis': { types: { import: './cache/ioredis.d.ts', require: './cache/ioredis.d.cts', default: './cache/ioredis.d.ts' }, import: './cache/ioredis.js', require: './cache/ioredis.cjs' }, './cache/file_system': { types: { import: './cache/file_system.d.ts', require: './cache/file_system.d.cts', default: './cache/file_system.d.ts' }, import: './cache/file_system.js', require: './cache/file_system.cjs' }, './cache/upstash_redis': { types: { import: './cache/upstash_redis.d.ts', require: './cache/upstash_redis.d.cts', default: './cache/upstash_redis.d.ts' }, import: './cache/upstash_redis.js', require: './cache/upstash_redis.cjs' }, './stores/doc/in_memory': { types: { import: './stores/doc/in_memory.d.ts', require: './stores/doc/in_memory.d.cts', default: './stores/doc/in_memory.d.ts' }, import: './stores/doc/in_memory.js', require: './stores/doc/in_memory.cjs' }, './stores/doc/gcs': { types: { import: './stores/doc/gcs.d.ts', require: './stores/doc/gcs.d.cts', default: './stores/doc/gcs.d.ts' }, import: './stores/doc/gcs.js', require: './stores/doc/gcs.cjs' }, './stores/file/in_memory': { types: { import: './stores/file/in_memory.d.ts', require: './stores/file/in_memory.d.cts', default: './stores/file/in_memory.d.ts' }, import: './stores/file/in_memory.js', require: './stores/file/in_memory.cjs' }, './stores/file/node': { types: { import: './stores/file/node.d.ts', require: './stores/file/node.d.cts', default: './stores/file/node.d.ts' }, import: './stores/file/node.js', require: './stores/file/node.cjs' }, './stores/message/cassandra': { types: { import: './stores/message/cassandra.d.ts', require: './stores/message/cassandra.d.cts', default: './stores/message/cassandra.d.ts' }, import: './stores/message/cassandra.js', require: './stores/message/cassandra.cjs' }, './stores/message/convex': { types: { import: './stores/message/convex.d.ts', require: './stores/message/convex.d.cts', default: './stores/message/convex.d.ts' }, import: './stores/message/convex.js', require: './stores/message/convex.cjs' }, './stores/message/cloudflare_d1': { types: { import: './stores/message/cloudflare_d1.d.ts', require: './stores/message/cloudflare_d1.d.cts', default: './stores/message/cloudflare_d1.d.ts' }, import: './stores/message/cloudflare_d1.js', require: './stores/message/cloudflare_d1.cjs' }, './stores/message/in_memory': { types: { import: './stores/message/in_memory.d.ts', require: './stores/message/in_memory.d.cts', default: './stores/message/in_memory.d.ts' }, import: './stores/message/in_memory.js', require: './stores/message/in_memory.cjs' }, './stores/message/dynamodb': { types: { import: './stores/message/dynamodb.d.ts', require: './stores/message/dynamodb.d.cts', default: './stores/message/dynamodb.d.ts' }, import: './stores/message/dynamodb.js', require: './stores/message/dynamodb.cjs' }, './stores/message/firestore': { types: { import: './stores/message/firestore.d.ts', require: './stores/message/firestore.d.cts', default: './stores/message/firestore.d.ts' }, import: './stores/message/firestore.js', require: './stores/message/firestore.cjs' }, './stores/message/momento': { types: { import: './stores/message/momento.d.ts', require: './stores/message/momento.d.cts', default: './stores/message/momento.d.ts' }, import: './stores/message/momento.js', require: './stores/message/momento.cjs' }, './stores/message/mongodb': { types: { import: './stores/message/mongodb.d.ts', require: './stores/message/mongodb.d.cts', default: './stores/message/mongodb.d.ts' }, import: './stores/message/mongodb.js', require: './stores/message/mongodb.cjs' }, './stores/message/redis': { types: { import: './stores/message/redis.d.ts', require: './stores/message/redis.d.cts', default: './stores/message/redis.d.ts' }, import: './stores/message/redis.js', require: './stores/message/redis.cjs' }, './stores/message/ioredis': { types: { import: './stores/message/ioredis.d.ts', require: './stores/message/ioredis.d.cts', default: './stores/message/ioredis.d.ts' }, import: './stores/message/ioredis.js', require: './stores/message/ioredis.cjs' }, './stores/message/upstash_redis': { types: { import: './stores/message/upstash_redis.d.ts', require: './stores/message/upstash_redis.d.cts', default: './stores/message/upstash_redis.d.ts' }, import: './stores/message/upstash_redis.js', require: './stores/message/upstash_redis.cjs' }, './stores/message/planetscale': { types: { import: './stores/message/planetscale.d.ts', require: './stores/message/planetscale.d.cts', default: './stores/message/planetscale.d.ts' }, import: './stores/message/planetscale.js', require: './stores/message/planetscale.cjs' }, './stores/message/xata': { types: { import: './stores/message/xata.d.ts', require: './stores/message/xata.d.cts', default: './stores/message/xata.d.ts' }, import: './stores/message/xata.js', require: './stores/message/xata.cjs' }, './storage/convex': { types: { import: './storage/convex.d.ts', require: './storage/convex.d.cts', default: './storage/convex.d.ts' }, import: './storage/convex.js', require: './storage/convex.cjs' }, './storage/encoder_backed': { types: { import: './storage/encoder_backed.d.ts', require: './storage/encoder_backed.d.cts', default: './storage/encoder_backed.d.ts' }, import: './storage/encoder_backed.js', require: './storage/encoder_backed.cjs' }, './storage/in_memory': { types: { import: './storage/in_memory.d.ts', require: './storage/in_memory.d.cts', default: './storage/in_memory.d.ts' }, import: './storage/in_memory.js', require: './storage/in_memory.cjs' }, './storage/ioredis': { types: { import: './storage/ioredis.d.ts', require: './storage/ioredis.d.cts', default: './storage/ioredis.d.ts' }, import: './storage/ioredis.js', require: './storage/ioredis.cjs' }, './storage/vercel_kv': { types: { import: './storage/vercel_kv.d.ts', require: './storage/vercel_kv.d.cts', default: './storage/vercel_kv.d.ts' }, import: './storage/vercel_kv.js', require: './storage/vercel_kv.cjs' }, './storage/upstash_redis': { types: { import: './storage/upstash_redis.d.ts', require: './storage/upstash_redis.d.cts', default: './storage/upstash_redis.d.ts' }, import: './storage/upstash_redis.js', require: './storage/upstash_redis.cjs' }, './storage/file_system': { types: { import: './storage/file_system.d.ts', require: './storage/file_system.d.cts', default: './storage/file_system.d.ts' }, import: './storage/file_system.js', require: './storage/file_system.cjs' }, './graphs/neo4j_graph': { types: { import: './graphs/neo4j_graph.d.ts', require: './graphs/neo4j_graph.d.cts', default: './graphs/neo4j_graph.d.ts' }, import: './graphs/neo4j_graph.js', require: './graphs/neo4j_graph.cjs' }, './hub': { types: { import: './hub.d.ts', require: './hub.d.cts', default: './hub.d.ts' }, import: './hub.js', require: './hub.cjs' }, './util/convex': { types: { import: './util/convex.d.ts', require: './util/convex.d.cts', default: './util/convex.d.ts' }, import: './util/convex.js', require: './util/convex.cjs' }, './util/document': { types: { import: './util/document.d.ts', require: './util/document.d.cts', default: './util/document.d.ts' }, import: './util/document.js', require: './util/document.cjs' }, './util/math': { types: { import: './util/math.d.ts', require: './util/math.d.cts', default: './util/math.d.ts' }, import: './util/math.js', require: './util/math.cjs' }, './util/time': { types: { import: './util/time.d.ts', require: './util/time.d.cts', default: './util/time.d.ts' }, import: './util/time.js', require: './util/time.cjs' }, './experimental/autogpt': { types: { import: './experimental/autogpt.d.ts', require: './experimental/autogpt.d.cts', default: './experimental/autogpt.d.ts' }, import: './experimental/autogpt.js', require: './experimental/autogpt.cjs' }, './experimental/openai_assistant': { types: { import: './experimental/openai_assistant.d.ts', require: './experimental/openai_assistant.d.cts', default: './experimental/openai_assistant.d.ts' }, import: './experimental/openai_assistant.js', require: './experimental/openai_assistant.cjs' }, './experimental/openai_files': { types: { import: './experimental/openai_files.d.ts', require: './experimental/openai_files.d.cts', default: './experimental/openai_files.d.ts' }, import: './experimental/openai_files.js', require: './experimental/openai_files.cjs' }, './experimental/babyagi': { types: { import: './experimental/babyagi.d.ts', require: './experimental/babyagi.d.cts', default: './experimental/babyagi.d.ts' }, import: './experimental/babyagi.js', require: './experimental/babyagi.cjs' }, './experimental/generative_agents': { types: { import: './experimental/generative_agents.d.ts', require: './experimental/generative_agents.d.cts', default: './experimental/generative_agents.d.ts' }, import: './experimental/generative_agents.js', require: './experimental/generative_agents.cjs' }, './experimental/plan_and_execute': { types: { import: './experimental/plan_and_execute.d.ts', require: './experimental/plan_and_execute.d.cts', default: './experimental/plan_and_execute.d.ts' }, import: './experimental/plan_and_execute.js', require: './experimental/plan_and_execute.cjs' }, './experimental/multimodal_embeddings/googlevertexai': { types: { import: './experimental/multimodal_embeddings/googlevertexai.d.ts', require: './experimental/multimodal_embeddings/googlevertexai.d.cts', default: './experimental/multimodal_embeddings/googlevertexai.d.ts' }, import: './experimental/multimodal_embeddings/googlevertexai.js', require: './experimental/multimodal_embeddings/googlevertexai.cjs' }, './experimental/chat_models/anthropic_functions': { types: { import: './experimental/chat_models/anthropic_functions.d.ts', require: './experimental/chat_models/anthropic_functions.d.cts', default: './experimental/chat_models/anthropic_functions.d.ts' }, import: './experimental/chat_models/anthropic_functions.js', require: './experimental/chat_models/anthropic_functions.cjs' }, './experimental/chat_models/bittensor': { types: { import: './experimental/chat_models/bittensor.d.ts', require: './experimental/chat_models/bittensor.d.cts', default: './experimental/chat_models/bittensor.d.ts' }, import: './experimental/chat_models/bittensor.js', require: './experimental/chat_models/bittensor.cjs' }, './experimental/chat_models/ollama_functions': { types: { import: './experimental/chat_models/ollama_functions.d.ts', require: './experimental/chat_models/ollama_functions.d.cts', default: './experimental/chat_models/ollama_functions.d.ts' }, import: './experimental/chat_models/ollama_functions.js', require: './experimental/chat_models/ollama_functions.cjs' }, './experimental/llms/bittensor': { types: { import: './experimental/llms/bittensor.d.ts', require: './experimental/llms/bittensor.d.cts', default: './experimental/llms/bittensor.d.ts' }, import: './experimental/llms/bittensor.js', require: './experimental/llms/bittensor.cjs' }, './experimental/hubs/makersuite/googlemakersuitehub': { types: { import: './experimental/hubs/makersuite/googlemakersuitehub.d.ts', require: './experimental/hubs/makersuite/googlemakersuitehub.d.cts', default: './experimental/hubs/makersuite/googlemakersuitehub.d.ts' }, import: './experimental/hubs/makersuite/googlemakersuitehub.js', require: './experimental/hubs/makersuite/googlemakersuitehub.cjs' }, './experimental/chains/violation_of_expectations': { types: { import: './experimental/chains/violation_of_expectations.d.ts', require: './experimental/chains/violation_of_expectations.d.cts', default: './experimental/chains/violation_of_expectations.d.ts' }, import: './experimental/chains/violation_of_expectations.js', require: './experimental/chains/violation_of_expectations.cjs' }, './experimental/masking': { types: { import: './experimental/masking.d.ts', require: './experimental/masking.d.cts', default: './experimental/masking.d.ts' }, import: './experimental/masking.js', require: './experimental/masking.cjs' }, './experimental/prompts/custom_format': { types: { import: './experimental/prompts/custom_format.d.ts', require: './experimental/prompts/custom_format.d.cts', default: './experimental/prompts/custom_format.d.ts' }, import: './experimental/prompts/custom_format.js', require: './experimental/prompts/custom_format.cjs' }, './experimental/prompts/handlebars': { types: { import: './experimental/prompts/handlebars.d.ts', require: './experimental/prompts/handlebars.d.cts', default: './experimental/prompts/handlebars.d.ts' }, import: './experimental/prompts/handlebars.js', require: './experimental/prompts/handlebars.cjs' }, './experimental/tools/pyinterpreter': { types: { import: './experimental/tools/pyinterpreter.d.ts', require: './experimental/tools/pyinterpreter.d.cts', default: './experimental/tools/pyinterpreter.d.ts' }, import: './experimental/tools/pyinterpreter.js', require: './experimental/tools/pyinterpreter.cjs' }, './evaluation': { types: { import: './evaluation.d.ts', require: './evaluation.d.cts', default: './evaluation.d.ts' }, import: './evaluation.js', require: './evaluation.cjs' }, './smith': { types: { import: './smith.d.ts', require: './smith.d.cts', default: './smith.d.ts' }, import: './smith.js', require: './smith.cjs' }, './runnables': { types: { import: './runnables.d.ts', require: './runnables.d.cts', default: './runnables.d.ts' }, import: './runnables.js', require: './runnables.cjs' }, './runnables/remote': { types: { import: './runnables/remote.d.ts', require: './runnables/remote.d.cts', default: './runnables/remote.d.ts' }, import: './runnables/remote.js', require: './runnables/remote.cjs' }, './indexes': { types: { import: './indexes.d.ts', require: './indexes.d.cts', default: './indexes.d.ts' }, import: './indexes.js', require: './indexes.cjs' }, './package.json': './package.json' }, gitHead: 'c9d445b3cf29c3253699fa4a375db9c560b4c2d3', dist: { integrity: 'sha512-sfEChvr4H2CklHdSByNBbytwBrFhgtA5kPOnwcBrxuXGg1iOaTzhVxQA0QcNcQucI3hZrsNbZjxGp+Can1ooZQ==', shasum: 'afd0faf2eadfb5e6e1d57bb3bbc5731918e62135', tarball: 'https://registry.npmjs.org/langchain/-/langchain-0.1.25.tgz', fileCount: 2813, unpackedSize: 4041149, signatures: [ { keyid: 'SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA', sig: 'MEUCIF60mZaGgguX4QEh2NSUCBlemKP3FNevmEAUIv4ipcUvAiEArOMbLLKgRwajDimz1W6LdgZ3fROeN3y4y6x31noCiXw=' } ] }, directories: {}

dosubot[bot] commented 4 months ago

Hey @bakertn, great to see you diving into LangChain JS again! How've you been since our last chat?

Thank you for providing such a detailed report. The deprecation warning you're seeing is likely due to an indirect dependency of LangChainJS. The whatwg-url package, which is used by LangChainJS, depends on the tr46 package, which in turn depends on the punycode package.

The punycode module was deprecated in Node.js v7.0.0, and it seems that the whatwg-url package hasn't updated its dependencies to remove or replace the punycode module. This is why you're seeing the deprecation warning.

While this warning is not ideal, it should not affect the functionality of your LangChainJS application. The punycode module is still included in Node.js for backwards compatibility, even though it's deprecated.

As a maintainer, I don't have the ability to fix this issue directly, as it's not caused by the LangChainJS codebase itself. However, I recommend the following steps:

  1. You could open an issue on the whatwg-url repository, explaining the problem and asking them to update their dependencies.
  2. If you're not comfortable with the deprecation warning, you could downgrade your Node.js version to one that doesn't have the punycode module deprecated. However, this is not a recommended solution, as it's always best to use the latest stable version of Node.js.

I hope this helps! If you have any other questions, feel free to ask.

For more information, you can check the following resources:

Source

Sources

#### About Dosu This response is meant to be useful and save you time. It is **not meant to be a precise solution**, but rather a starting point for your own research. Help me be more useful! Please leave a πŸ‘ if this is helpful and πŸ‘Ž if it is irrelevant. If you want to continue the conversation, start your reply with @dosu-bot.
bakertn commented 4 months ago

I am a bit confused by your response. You indicated there was nothing you could do about it. But previously you said: The whatwg-url package, which is used by LangChainJS, depends on the tr46 package, which in turn depends on the punycode package.

So Langchain has a dependency on the tr46 package, and this package has a dependency on punycode, which you say has been deprecated for some time. So by proxy, Langchain DOES have a dependency on punycode, based on your very detailed answer. So, if you fixed Langchain to remove the dependency on tr46 this issue would disappear. It is the execution of Langchain, which has this dependency, which is generating the warning.

Thank you for providing such a detailed report. The deprecation warning you're seeing is likely due to an indirect dependency of LangChainJS. The whatwg-url package, which is used by LangChainJS, depends on the tr46 package, which in turn depends on the punycode package.

The punycode module was deprecated in Node.js v7.0.0, and it seems that the whatwg-url package hasn't updated its dependencies to remove or replace the punycode module. This is why you're seeing the deprecation warning.

While this warning is not ideal, it should not affect the functionality of your LangChainJS application. The punycode module is still included in Node.js for backwards compatibility, even though it's deprecated.

As a maintainer, I don't have the ability to fix this issue directly, as it's not caused by the LangChainJS codebase itself. However, I recommend the following steps:

bakertn commented 4 months ago

So why would a major dependency by Langchain, on the whatwg-url package be created when we know it has a very outdated dependency encapsulated within it? And why hasn't Langchain proper, notified whatwg-url to clean up its package, as you are a well-known entity, that would in all likelihood, get a much faster response than some random person.

Didn't anyone at Langchain notice that when you run the getting started demo/code it throws up? As a first-time user, it was the first thing I noticed.

Not a great impression out of the gate BTW.

dosubot[bot] commented 4 months ago

@jacoblee93, this one's a bit out of my wheelhouse, could you step in and provide your guidance?

jacoblee93 commented 4 months ago

Hey, I don't think this appears below Node 21 which is why nobody noticed before since it's not LTS. Most people should use Node 20:

https://nodejs.org/en

That said, still worth cleaning up. Thanks for the report!

jacoblee93 commented 4 months ago

Did a bit of digging, and seems like it's related to node-fetch:

https://github.com/lquixada/cross-fetch/issues/177

It's a dep some popular packages like openai use to polyfill fetch behavior. Our model wrappers rely on these deps. Would imagine this will be cleared up by next Node LTS. Not much we can do until then.

In the meantime, I'd suggest switching to Node 20. I'll keep this open.

bakertn commented 4 months ago

Thank you for your very detailed feedback and such a timely response. I will downgrade my Node version as you suggested to 20. Having smoke pouring off of it right at "getting started" was a bit concerning. The new platform looks amazing by the way. Took it for a few test drives already. Thanks again.

bakertn commented 4 months ago

This issue is now closed. Appreciate it.