SyntaxError: Unexpected keyword 'const'?

阿9發表於2018-12-06

SyntaxError: Unexpected keyword 'const'. Const declarations are not supported in strict mode.

看到這篇文章的同學,肯定在網上已經看到了答案,原因是因為我們使用的webpack4中已經不會把一些es6的常用特性轉換成es5了。 我是經過一系列的驗證而得出這個不負責任的結論的。

首先這個問題我是在ios8系統的微信中發現的,特徵就是白屏。一開始遇到的時候一臉茫然,因為手機上又不像電腦上的瀏覽器,可以檢視報錯。於是引入vconsole,才得以發現這個報錯。

一開始我天真的以為只要將專案中的const全部換成var就可以了,新建了一個分支操作了之後發現沒有變化。

在接下來,我想到的是babel,於是在.babeirc

{
  "presets": [
    "react",
    "stage-0",
    "es2015",
    "es2016",
    "es2017",
    [ //加了這個陣列的東西
        "env",
        {
          "modules": false,
          "targets": {
            "browsers": "> 1%",
            "uglify": true
          },
          "useBuiltIns": true
        }
    ]
  ],
  "plugins": [
    "transform-runtime",
    "transform-decorators-legacy",
    "transform-class-properties",
    [
      "react-css-modules",
      {
        "generateScopedName": "[name]_[local]",
        "filetypes": {
          ".scss": {
            "syntax": "postcss-scss"
          }
        }
      }
    ],
    [
      "import",
      {
        "libraryName": "antd-mobile",
        "style": true
      }
    ]
  ]
}

複製程式碼

但是好像沒有用耶。

谷歌上說的基本上都是說因為webpack-dev-server這個包造成的,但經過思考我覺得並不是,因為這個包是用在我們執行時,也就是說打包的話其實跟這個包是不相關的。

我也是按照網上說的,將webpack-dev-server降級處理,但是這個包最新的版本是依賴webpack4的,無疑也要將webpack降級到webpack3。

在這裡下個不負責任的結論,造成這個報錯不是因為webpack-dev-server,而是因為webpack。

僅供參考。

如果不需要相容ios8這個的低版本,我覺得webpack4還是ok的。

相關文章