You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SvelteKit生产环境因MongoDb无法运行问题求助

SvelteKit + MongoDB 构建与运行问题

问题情况

在SvelteKit项目中使用MongoDB@5.1.0,开发环境运行正常无警告,采用@sveltejs/adapter-node适配器。执行pnpm run build时出现循环依赖提示,直接通过node build/index.js运行构建产物会崩溃,报错找不到mock-aws-s3包,但使用pnpm run preview则能正常运行。

构建时循环依赖信息

> Using @sveltejs/adapter-node
"aws-sdk" is imported by "aws-sdk?commonjs-external", but could not be resolved – treating it as an external dependency.
"nock" is imported by "nock?commonjs-external", but could not be resolved – treating it as an external dependency.
"mock-aws-s3" is imported by "mock-aws-s3?commonjs-external", but could not be resolved – treating it as an external dependency.
Circular dependency: node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/change_stream.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/collection.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/change_stream.js
Circular dependency: node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/collection.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/operations/rename.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/collection.js
Circular dependency: node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/change_stream.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/cursor/change_stream_cursor.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/change_stream.js
Circular dependency: node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/change_stream.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/db.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/change_stream.js
Circular dependency: node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/change_stream.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/mongo_client.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/change_stream.js
Circular dependency: node_modules/.pnpm/mongodb-connection-string-url@2.6.0/node_modules/mongodb-connection-string-url/lib/index.js -> node_modules/.pnpm/mongodb-connection-string-url@2.6.0/node_modules/mongodb-connection-string-url/lib/redact.js -> node_modules/.pnpm/mongodb-connection-string-url@2.6.0/node_modules/mongodb-connection-string-url/lib/index.js
Circular dependency: node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/mongo_client.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/connection_string.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/encrypter.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/mongo_client.js
Circular dependency: node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/index.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/change_stream.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/mongo_client.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/connection_string.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/encrypter.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/index.js
Circular dependency: node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/mongo_client.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/connection_string.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/mongo_client.js
Circular dependency: node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/sdam/server.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/sdam/monitor.js -> node_modules/.pnpm/mongodb@5.1.0/node_modules/mongodb/lib/sdam/server.js
Circular dependency: node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_readable.js -> node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_duplex.js -> node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_readable.js
Circular dependency: node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_duplex.js -> node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js -> node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_duplex.js
Circular dependency: node_modules/.pnpm/glob@7.2.3/node_modules/glob/glob.js -> node_modules/.pnpm/glob@7.2.3/node_modules/glob/sync.js -> node_modules/.pnpm/glob@7.2.3/node_modules/glob/glob.js
Circular dependency: node_modules/.pnpm/@mapbox+node-pre-gyp@1.0.10/node_modules/@mapbox/node-pre-gyp/lib/node-pre-gyp.js -> node_modules/.pnpm/@mapbox+node-pre-gyp@1.0.10/node_modules/@mapbox/node-pre-gyp/lib/pre-binding.js -> node_modules/.pnpm/@mapbox+node-pre-gyp@1.0.10/node_modules/@mapbox/node-pre-gyp/lib/node-pre-gyp.js
Circular dependency: node_modules/.pnpm/semver@7.3.8/node_modules/semver/classes/comparator.js -> node_modules/.pnpm/semver@7.3.8/node_modules/semver/classes/range.js -> node_modules/.pnpm/semver@7.3.8/node_modules/semver/classes/comparator.js

运行时错误信息

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'mock-aws-s3' imported from /home/gmn/projects/examples/example/build/server/chunks/3-bb04b102.js
    at new NodeError (node:internal/errors:400:5)
    at packageResolve (node:internal/modules/esm/resolve:889:9)
    at moduleResolve (node:internal/modules/esm/resolve:938:20)
    at defaultResolve (node:internal/modules/esm/resolve:1153:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:842:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36)
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'mock-aws-s3' imported from /home/gmn/projects/examples/example/build/server/chunks/3-bb04b102.js
    at new NodeError (node:internal/errors:400:5)
    at packageResolve (node:internal/modules/esm/resolve:889:9)
    at moduleResolve (node:internal/modules/esm/resolve:938:20)
    at defaultResolve (node:internal/modules/esm/resolve:1153:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:842:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36)
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'mock-aws-s3' imported from /home/gmn/projects/examples/example/build/server/chunks/3-bb04b102.js
    at new NodeError (node:internal/errors:400:5)
    at packageResolve (node:internal/modules/esm/resolve:889:9)
    at moduleResolve (node:internal/modules/esm/resolve:938:20)
    at defaultResolve (node:internal/modules/esm/resolve:1153:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:842:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36)
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'mock-aws-s3' imported from /home/gmn/projects/examples/example/build/server/chunks/3-bb04b102.js
    at new NodeError (node:internal/errors:400:5)
    at packageResolve (node:internal/modules/esm/resolve:889:9)
    at moduleResolve (node:internal/modules/esm/resolve:938:20)
    at defaultResolve (node:internal/modules/esm/resolve:1153:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:842:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36)

解决方案

  • 标记测试依赖为外部包:mock-aws-s3、nock、aws-sdk是MongoDB的测试/开发依赖,无需打包进生产产物。修改vite.config.js,在SSR配置中标记它们为外部依赖:
    import { sveltekit } from '@sveltejs/kit/vite';
    import { defineConfig } from 'vite';
    
    export default defineConfig({
      plugins: [sveltekit()],
      ssr: {
        external: ['mock-aws-s3', 'nock', 'aws-sdk']
      }
    });
    
  • 升级MongoDB版本:MongoDB@5.1.0存在依赖树问题,升级到5.2.0及以上版本,或直接升级到6.x系列,这些版本修复了不必要的测试依赖被引入生产构建的问题。执行命令:
    pnpm update mongodb@^5.2.0
    
  • 清理并重新安装依赖:可能是pnpm缓存导致依赖解析异常,清理缓存后重新安装:
    pnpm store prune && pnpm install
    
  • 配置适配器外部依赖:在svelte.config.js中给adapter-node指定外部依赖:
    import adapter from '@sveltejs/adapter-node';
    import { vitePreprocess } from '@sveltejs/kit/vite';
    
    export default {
      preprocess: vitePreprocess(),
      kit: {
        adapter: adapter({
          external: ['mock-aws-s3', 'nock', 'aws-sdk']
        })
      }
    };
    

内容的提问来源于stack exchange,提问作者GMN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 10:03:09