Nuxt項目支持import寫法的三種解決方案

一、前情摘要
使用npx create-nuxt-app創建Nuxt.js項目,項目默認使用require引入依賴,如下:

const Koa = require('koa')

而此時我們想使用ES6的 import 語法:

import Koa from 'koa'

運行的時候,會報 SyntaxError: Unexpected identifier,即不識別import錯誤。
這是因爲使用 npx create-nuxt-app 創建出來的Nuxt.js項目在 npm run dev 時直接使用node編譯index.js,我們之前寫的項目之所以可以,是因爲有用babel去處理,也就是說,要想node本身支持 import 語法,那我們就要安裝 babel 去處理。

二、解決方案

1、使用 babel-preset-es2015

前提:已安裝babel-cli,還沒安裝可通過 npm install -g babel-cli 安裝

(1)修改package.json,下圖中紅框部分,結合babel處理:
(2)項目根目錄創建babel配置文件 .babelre 並配置:

{
  "presets": [
    "es2015"
  ]
}

(3)安裝 babel-preset-es2015

npm install babel-preset-es2015

最後重新運行 npm run dev,問題解決。
但目前官方已經不推薦使用 babel-preset-es2015,在你安裝過程中,它會建議你使用 babel-preset-env 代替。

2、使用 babel-preset-env
步驟與方案1一樣,不同之處是把安裝babel-preset-es2015 改爲 babel-preset-env,再對應修改 .babelre 文件即可:

{
  "presets": [
    "env"
  ]
}

3、使用 @babel/cli、@babel/core、@babel/preset-env、@babel/node

想知道你已經安裝了哪些包,直接看 package.json 文件。

這裏提一下 @babel/cli 與 babel-cli 的區別:
@babel/cli 是7.0以後的版本的命名方式,bable-cli 是之前的,如下圖所示:
在這裏插入圖片描述
如果使用的是 7.0 以後的版本,則安裝包都是以 @babel 開頭的。
在babel 7.x 以前,babel-node通過安裝bable-cli包即可。
但在Babel 7.x 以後,babel 的模塊被被拆分。因此需要單獨安裝 @babel/node。

安裝完後,修改package.json文件:

“scripts”: {
“dev”: "cross-env NODE_ENV=development nodemon server/index.js --watch server --exec babel-node --presets @babel/env",
“build”: “nuxt build”,
“start”: "cross-env NODE_ENV=production nodemon server/index.js --exec babel-node --presets @babel/env",
“generate”: “nuxt generate”,
“lint”: “eslint --ext .js,.vue --ignore-path .gitignore .”,
“test”: “jest”
}

最後運行 npm run dev,問題即可解決,此時並不需要配置(可以沒有) .babelrc 文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章