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

执行serverless deploy报错:'import'和'export'仅适用于sourceType: module

解决Serverless Deploy时的'import' and 'export' may appear only with 'sourceType: module'错误

以下是针对性的实用解决步骤,按优先级尝试:

1. 给项目明确ES模块类型

在项目根目录的package.json中添加配置,告知Node.js当前为ES模块项目:

{
  "type": "module"
}

2. 配置Serverless代码构建工具

若项目使用了serverless-esbuild或serverless-webpack这类代码优化/构建插件,需明确指定模块格式:

针对serverless-esbuild

在serverless.yml的custom字段中补充ES模块配置:

custom:
  esbuild:
    format: esm
    target: node16 # 匹配你的Node版本(当前为16.10.0)

针对serverless-webpack

修改webpack.config.js,通过Babel转译ES模块为CommonJS:

export default {
  mode: 'production',
  entry: './handler.js',
  target: 'node16',
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: [['@babel/preset-env', { targets: { node: '16' } }]]
          }
        }
      }
    ]
  },
  output: {
    filename: 'handler.js',
    libraryTarget: 'commonjs2'
  }
};

3. 调整Browserify配置(若依赖它)

如果必须用Browserify处理代码,需指定sourceType: module或转译ES模块:

命令行方式

执行Browserify时添加参数:

browserify --source-type=module src/handler.js -o dist/handler.js

配置文件方式(如browserify.config.js)

export default {
  sourceType: 'module',
  transform: [['babelify', { presets: ['@babel/preset-env'] }]]
};

4. 修正ESLint配置

确保.eslintrc.js正确识别ES模块:

export default {
  env: {
    node: true,
    es2021: true
  },
  parserOptions: {
    sourceType: 'module',
    ecmaVersion: 'latest'
  },
  rules: {
    // 你的其他规则
  }
};

5. 升级Serverless框架

旧版本框架对ES模块支持可能存在缺陷,升级到最新稳定版:

npm install -g serverless@latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:45:11