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

VSCode扩展打包后出现“a dynamic import callback was not specified”错误求助

问题修复方案

1. 自定义webpack配置(首选)

vsce默认用webpack打包扩展,动态导入.mjs文件时,webpack默认配置没正确处理ES模块解析,导致打包后动态导入逻辑失效。在扩展根目录新建或修改webpack.config.js,加上这些配置:

module.exports = {
  target: 'node', // VSCode扩展跑在Node.js环境下
  module: {
    rules: [
      {
        test: /\.mjs$/,
        include: /node_modules/,
        type: 'javascript/auto'
      }
    ]
  },
  resolve: {
    extensions: ['.mjs', '.js', '.json']
  }
};

这个配置能让webpack正确识别.mjs文件的ES模块属性,避免打包时破坏动态导入的逻辑。

2. 跳过webpack打包

如果不想改配置,试试用vsce package的--no-webpack参数,直接打包源码不经过webpack处理:

vsce package --no-webpack

但要注意,这种方式会让扩展体积变大,而且得确保所有依赖在目标VSCode环境里能正常加载,适合依赖不多的简单扩展。

3. 替换动态导入方式

要是上面两种方法都不行,就把import()换成Node.js原生的加载方式。如果你的.mjs模块兼容CommonJS,直接用require();如果是纯ES模块,用createRequire:

import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const myModule = require('./path/to/your.module.mjs');

不过这种方式得保证.mjs模块能被CommonJS环境解析,部分纯ES模块可能不支持。

问题根源

核心原因是打包后的模块环境里,动态导入的回调没被正确注册。webpack默认打包会处理动态导入,但对.mjs文件的解析规则需要手动配置,不然打包后的代码在VSCode的Node.js环境里没法正常执行动态导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:50:42