소스 검색

enable ollama-js use in an environment without whatwg (#125)

- use dynamic import to allow setting fetch without whatwg-fetch being present
Bruce MacDonald 11 달 전
부모
커밋
f73dae5ecd
1개의 변경된 파일18개의 추가작업 그리고 4개의 파일을 삭제
  1. 18 4
      src/browser.ts

+ 18 - 4
src/browser.ts

@@ -1,6 +1,5 @@
 import * as utils from './utils.js'
 import { AbortableAsyncIterator, parseJSON, post } from './utils.js'
-import 'whatwg-fetch'
 
 import type {
   ChatRequest,
@@ -39,9 +38,24 @@ export class Ollama {
       this.config.host = utils.formatHost(config?.host ?? 'http://127.0.0.1:11434')
     }
 
-    this.fetch = fetch
-    if (config?.fetch != null) {
-      this.fetch = config.fetch
+    this.fetch = config?.fetch || this.getFetch();
+  }
+
+  private getFetch(): Fetch {
+    if (typeof window !== 'undefined' && window.fetch) {
+      return window.fetch.bind(window);
+    }
+    
+    if (typeof global !== 'undefined' && global.fetch) {
+      return global.fetch;
+    }
+    
+    try {
+      // Use dynamic import for Node.js environments
+      return require('node-fetch');
+    } catch (error) {
+      console.error('Failed to import node-fetch:', error);
+      throw new Error('Fetch is not available. Please provide a fetch implementation in the config.');
     }
   }