【问题标题】:Error on import?导入错误?
【发布时间】:2016-02-10 11:48:57
【问题描述】:

我正在设置一个 phoenix 服务器,并计划在前端使用 React。

我在尝试导入 React 时遇到了 webpack 无法编译 js 的问题。

这是我得到的错误,我希望你们能帮助我。

./web/static/js/app.js 中的错误 模块解析失败:/home/steelo/node_modules/babel-loader/index.js!/home/steelo/node_modules/eslint-loader/index.js!/home/steelo/web/static/js/app.js 第1行: 意外的标记 您可能需要适当的加载程序来处理此文件类型。 |从“反应”导入反应;

我的 package.json 看起来像这样

{
  "name": "steelo",
  "version": "0.0.0",
  "description": "",
  "main": "webpack.config.js",
  "scripts": {},
  "author": "",
  "dependencies": {
    "brunch": "^1.8.5",
    "babel-brunch": "^5.1.1",
    "sass-brunch": "~1.9.1",
    "clean-css-brunch": ">= 1.0 < 1.8",
    "css-brunch": ">= 1.0 < 1.8",
    "javascript-brunch": ">= 1.0 < 1.8",
    "uglify-js-brunch": ">= 1.0 < 1.8",
    "eslint-plugin-react": "~3.8.0",
    "react": "~0.14.2",
    "react-dom": "~0.14.2",
    "rx-dom": "~7.0.3",
    "rx": "~4.0.6"
  },
  "devDependencies": {
    "webpack": "~1.12.3",
    "babel": "~6.0.15",
    "babel-loader": "~6.1.0",
    "babel-core": "~6.1.2",
    "babel-eslint": "~4.1.4",
    "eslint": "~1.9.0",
    "eslint-loader": "~1.1.1",
    "node-sass": "~3.4.1",
    "style-loader": "~0.13.0",
    "postcss-loader": "~0.7.0",
    "css-loader": "~0.22.0",
    "sass-loader": "~3.1.1",
    "autoprefixer": "~6.1.0"
  }
}

而我的 webpack.config.js 看起来像这样

var autoprefixer = require('autoprefixer');
var webpack = require('webpack');

module.exports = {
    entry: "./web/static/js/app.js",
    output: {
        path: "./priv/static/js",
        filename: "app.js"
    },
    eslint: {
        configFile: '.eslintrc'
    },
    module: {
        preLoaders: [
            {test: /\.js$/, loader: 'eslint-loader', exclude: [/node_modules/, /web\/static\/vendor/]}
        ],
        loaders: [
            {test: /\.js$/, exclude: [/node_modules/, /web\/static\/vendor/], loader: 'babel-loader'},
            {test: /\.scss$/, loader: 'style!css!sass!postcss-loader'}
        ]
    },
    postcss: [ autoprefixer({ browsers: ['last 2 version'] }) ]
};

【问题讨论】:

标签: reactjs ecmascript-6 webpack babeljs phoenix-framework


【解决方案1】:

要在 Babel 6 中使用 ES2015 和 React,您需要安装 es2015react 预设:

npm install --save-dev babel-preset-es2015 babel-preset-react

然后配置 babel 使用它们。在您的项目根目录中创建一个.babelrc,使用以下内容:

.babelrc

{
  "presets": ["es2015", "react"]
}

【讨论】:

  • 知道为什么我需要在 webpack 配置文件中添加预设,它似乎没有在 .babelrc 中使用预设
  • 它对我有用。尝试再次删除node_modulesnpm install
  • @user1322163 这很奇怪......但是如果你删除eslint-loader 它是否适用于.babelrc?因为我尝试使用.babelrc 使用babel-loadereslint-loader 的简化版本,我想我可以重现发生在你身上的事情。
猜你喜欢
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2016-11-02
  • 2014-10-10
  • 1970-01-01
相关资源
最近更新 更多