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

Webpack+TypeScript项目出现SCRIPT1003: Expected ':'错误求助

问题根源分析

这个SCRIPT1003: Expected ':'错误是旧版IE浏览器(比如IE11及以下)不支持ES6对象属性简写语法导致的。你看到的Webpack自动生成代码里的{ i, l: !1, exports :{} },其中i是ES6的简写语法(等价于i: i),而IE无法识别这种写法,所以抛出了语法错误。

解决方法

下面是几个针对性的配置调整步骤,按顺序尝试即可:

1. 调整TypeScript编译目标到ES5

打开你的tsconfig.json,确保compilerOptions里的target设置为ES5,让TypeScript把代码编译成旧浏览器能识别的语法:

{
  "compilerOptions": {
    "target": "ES5",
    "module": "CommonJS", // 根据项目需求调整,确保模块语法兼容
    // 其他原有配置...
  }
}

2. 用Babel转译Webpack生成的Runtime代码

即使TypeScript编译到ES5,Webpack自身生成的模块加载runtime代码可能还是会包含ES6语法。这时候需要配置Babel来转译所有JS/TS文件:
首先安装依赖:

npm install --save-dev babel-loader @babel/core @babel/preset-env @babel/preset-typescript

然后修改Webpack配置(比如webpack.config.js),添加babel-loader规则:

module.exports = {
  module: {
    rules: [
      {
        test: /\.(ts|js)$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: [
              ['@babel/preset-env', {
                targets: {
                  browsers: ['IE 11', 'last 2 versions'] // 明确指定要兼容的浏览器
                }
              }],
              '@babel/preset-typescript'
            ]
          }
        }
      }
    ]
  },
  // 其他原有配置...
};

3. 设置Webpack的target为兼容旧浏览器

在Webpack配置里添加target选项,告诉Webpack生成适配旧浏览器的代码:

module.exports = {
  target: ['web', 'es5'], // 或者直接写'target: "ie11"'
  // 其他原有配置...
};

4. 验证开发环境配置

如果是在开发环境(比如用webpack-dev-server)报错,确保开发环境的Webpack配置也应用了上述转译规则,避免开发环境生成不兼容的代码。

完成以上配置后,重新构建项目,再在IE里测试,这个语法错误应该就能解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:38:33