zoukankan      html  css  js  c++  java
  • mobx中使用class语法或decorator修饰器时报错

    之前课程中老师用的babel的版本比较低,我在学习时安装的babel版本较高,因此每当使用class语法或decorator修饰器时都会出现一些报错的情况!

    ERROR in ./src/index.js 4:1

    Module parse failed: Unexpected character '@' (4:1)

    You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders

    | 

    | class Store {

    > @observable array = [];

    | @observable obj = {};

    | @observable map = new Map();

    在网上搜索了各种资料后,尝试修正了package.json和webpack.config.js文件的写法

    //package.json
    {
      "name": "mobx-test",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "start": "webpack -w",
        "test": "echo "Error: no test specified" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "@babel/core": "^7.7.7",
        "@babel/plugin-proposal-class-properties": "^7.7.4",
        "@babel/plugin-proposal-decorators": "^7.7.4",
        "@babel/preset-env": "^7.7.7",
        "babel-loader": "^7.1.5",
        "babel-preset-env": "^1.7.0",
        "webpack": "^4.41.3",
        "webpack-cli": "^3.3.10"
      },
      "dependencies": {
        "mobx": "^5.15.1"
      }
    } 
    //webpack.config.js
    const path = require('path');
    
    module.exports = {
    	mode:'development',
    	entry:path.resolve(__dirname,'src/index.js'),
    	output:{
    		path:path.resolve(__dirname,'dist'),
    		filename:'main.js'
    	},
    	module: {
    		rules:[{
    			test: /.js$/,
    			exclude: /node_modules/,
    			use:{
    				loader:'babel-loader',
    				options: {
       					"presets": [
       						[
       							"@babel/preset-env",
       							{"useBuiltIns":"entry"}
       						]
       					],
       					"plugins": [
      						["@babel/plugin-proposal-decorators", {"legacy": true}],
      						["@babel/plugin-proposal-class-properties", {"loose": true}]
    					]
    				}
       			}
    		}]
    	},
    	devtool:'inline-source-map'
    } 

    不再提示上面的错误,报了另一个错误:

    ERROR in ./src/index.js

    Module build failed (from ./node_modules/babel-loader/lib/index.js):

    Error: Requires Babel "^7.0.0-0", but was loaded with "6.26.3". If you are sure you have a compatible version of @babel/core, it is likely that something in your build process is loading the wrong version. Inspect the stack trace of this error to look for the first entry that doesn't mention "@babel/core" or "babel-core" to see what is calling Babel.

    按照错误提示信息,重新安装了低版本babel-core,在命令行中执行:

    npm install babel-core@^7.0.0-bridge.0 @babel/core -D

    安装好后,重新执行npm start启动项目,就不再报错了~

    但是仍然有一个警告⚠️:

    WARNING: We noticed you're using the `useBuiltIns` option without declaring a core-js version. Currently, we assume version 2.x when no version is passed. Since this default version will likely change in future versions of Babel, we recommend explicitly setting the core-js version you are using via the `corejs` option.

     

    You should also be sure that the version you pass to the `corejs` option matches the version specified in your `package.json`'s `dependencies` section. If it doesn't, you need to run one of the following commands:

     

      npm install --save core-js@2    npm install --save core-js@3

      yarn add core-js@2              yarn add core-js@3

    在以后项目中遇到问题时需要解决,在学习阶段暂时忽略一阵子。。。

  • 相关阅读:
    HTML学习笔记
    JSP与Servlet的跳转及得到路径方法整理(转)
    Servlet 学习笔记6:Cookie
    工作=娱乐=爱[龙]
    幸福的方法[龙]
    10张海报,激励人生[龙]
    8个方法让你安然度过低效率的日子[龙]
    使用空余时间的20个有效途径
    人生三点钟
    2013计划
  • 原文地址:https://www.cnblogs.com/superjishere/p/12096419.html
Copyright © 2011-2022 走看看