javascript - npm start 上出现意外 token 错误的模块构建失败 - React/webpack

标签 javascript node.js reactjs routes webpack

我正在尝试按照我在网上找到的本教程创建我的第一个 React 应用程序: http://jmfurlott.com/tutorial-setting-up-a-single-page-react-web-app-with-react-router-and-webpack/

但是我在完成后遇到了问题。当我在命令行中执行“npm start”时,我不断收到此错误:

ERROR in ./js/app.js Module build failed: SyntaxError: /Users/justinkruse/nike-plus-api/js/app.js: Unexpected token (10:6)

app.js:

import React from 'react';  
import Router from 'react-router';  
import { DefaultRoute, Link, Route, RouteHandler } from 'react-router';

import LoginHandler from './components/Login.js';

var App = React.createClass({  
  render: function() {
    return (
      <div className="nav"> //error points here at opening <
        <Link to="app">Home</Link>
        <Link to="login">Login</Link>

        <RouteHandler/>
      </div>
    );
  }
});

var routes = (  
  <Route name="app" path="/" handler={App}>
    <Route name="login" path="/login" handler={LoginHandler}/>
  </Route>
);

Router.run(routes, function (Handler) {  
  React.render(<Handler/>, document.body);
});

package.json:

{
  "name": "foobar",
  "version": "1.0.0",
  "description": "application foobar",
  "main": "index.js",
  "scripts": {
  "start": "webpack-dev-server --hot --progress --colors",
  "build": "webpack --progress --colors",
  "test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Justin Kruse",
"license": "ISC",
"devDependencies": {
  "babel-core": "^6.3.26",
  "babel-loader": "^6.2.0",
  "babel-preset-es2015": "^6.3.13",
  "babel-preset-react": "^6.3.13",
  "history": "^1.17.0",
  "react": "^0.14.3",
  "react-hot-loader": "^1.3.0",
  "react-router": "^1.0.3",
  "webpack": "^1.12.9",
  "webpack-dev-server": "^1.14.0"
},
"dependencies": {
  "history": "1.17.0"
  }
}

webpack.config.js:

var webpack = require('webpack');  
module.exports = {  
  entry: [
    'webpack/hot/only-dev-server',
    "./js/app.js"
  ],
  output: {
      path: __dirname + '/build',
      filename: "bundle.js"
  },
  module: {
      loaders: [
          { test: /\.js?$/, loader: 'babel', exclude: /node_modules/,
              query:
                {
                  presets:['react','es2015']
                } 
          },
          { test: /\.js?$/,loaders:['react-hot'], exclude: /node_modules/},
          { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'},
          { test: /\.css$/, loader: "style!css" }
      ]
  },
  plugins: [
    new webpack.NoErrorsPlugin()
  ]
};

有人问了类似的问题 here ,但它似乎已经死了。

最佳答案

您正在通过 babel 处理所有 .js 文件两次。一种使用 react 预设:

 { test: /\.js?$/, loader: 'babel', exclude: /node_modules/,
     query:
       {
         presets:['react','es2015']
       } 
 },

另一个没有:

{ test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'},

后者可能会给您带来错误,因为该加载程序无法理解 JSX。只需删除它即可。

顺便说一句:我会看一下 react-hot-boilerplate如果你想玩一下React热模块重载。

你需要这样的东西。但请再次检查上面的链接以获取更详细的配置。

webpack.config.js

var webpack = require('webpack');  
module.exports = {  
  entry: [
    'webpack/hot/only-dev-server',
    "./js/app.js"
  ],
  output: {
      path: __dirname + '/build',
      filename: "bundle.js"
  },
  module: {
      loaders: [
          { test: /\.js?$/,loaders:['react-hot', 'babel'], exclude: /node_modules/},
          { test: /\.css$/, loader: "style!css" }
      ]
  },
  plugins: [
    new webpack.NoErrorsPlugin()
  ]
};

.babelrc

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

作为旁注。 JavaScript 中的事情进展得很快...只是通知一下 react-hot-loader即将被弃用,取而代之的是 react-transform .

关于javascript - npm start 上出现意外 token 错误的模块构建失败 - React/webpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34520067/

相关文章:

javascript - 用于 int-string 对的高性能 JS 映射

node.js - 如何使用Nginx通过express router加载页面

ReactJS 应用程序发布到具有自定义域的 Github 页面

javascript - Socket IO输出次数过多

node.js - docker 容器内的应用程序无法调用同一容器上的服务

node.js - React 服务器未启动 - 与 renderProps 有关

javascript - useEffect 有时会给出 null 错误,因为 "error"变量来自 redux 的更改

javascript - 未捕获( promise )TypeError : Cannot read property 'uid' of undefined

JavaScript 弹出框与灯箱?

javascript - Angular/Javascript 'rounding' 长值?