Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/React(带Gulp/Babel)-无法导入_Javascript_Reactjs_Jira - Fatal编程技术网

Javascript/React(带Gulp/Babel)-无法导入

Javascript/React(带Gulp/Babel)-无法导入,javascript,reactjs,jira,Javascript,Reactjs,Jira,我正在为Atlassians JIRA系统开发一个插件,在这里我想提供一些高级用户控件。 我已经尝试过实现ES2015/Babel/Gulp,这很有效——我可以在这个构建中使用ECMA6函数。 然而,我也有几个已经测试和验证过的可用React编写的控件 从一些基本的东西开始,我尝试引用一个例子,并在我的视图中呈现它。 但是,我总是在浏览器中找不到React DOM,或者如果我试图在主脚本中导入它,就找不到React。我错过了什么 ReactTest.js摘录,仅显示部分代码 import Rea

我正在为Atlassians JIRA系统开发一个插件,在这里我想提供一些高级用户控件。 我已经尝试过实现ES2015/Babel/Gulp,这很有效——我可以在这个构建中使用ECMA6函数。 然而,我也有几个已经测试和验证过的可用React编写的控件

从一些基本的东西开始,我尝试引用一个例子,并在我的视图中呈现它。 但是,我总是在浏览器中找不到React DOM,或者如果我试图在主脚本中导入它,就找不到React。我错过了什么

ReactTest.js摘录,仅显示部分代码

import React from 'react';

let MNMLogo = 'http://www.mercurynewmedia.com/images/default-source/logos/mercury-logo-circle-201x201.png';

class SimpleExample extends React.Component {
    // React components are simple functions that take in props and state, and render HTML
    render() {
        return (
            <div>
            ...
            </div>
        );
    }
}
我的视图suces.vm速度模板

<html>
<head>
    <title>$i18n.getText("wfenhance.library-management.title")</title>
    <meta name="decorator" content="atl.admin">
</head>
...

<div id="ReactTest"></div>

</body>
</html>

您需要使用模块绑定器(如Webpack或Browserify)才能在应用程序中使用导入。Babel确实会将导入转换为所需,但浏览器无法要求模块

我的建议是使用Webpack,因为这是目前最成熟和最流行的捆绑包。在这种情况下,您也不需要使用Gulp

package.json

"dependencies": {

},
"devDependencies": {
  "babel": "^6.23.0",
  "babel-preset-es2015": "^6.24.0",
  "babel-preset-react": "^6.0.15",
  "babel-register": "^6.24.0",
  "gulp": "gulpjs/gulp#4.0",
  "gulp-babel": "^6.1.2",
  "gulp-debug": "^3.1.0",
  "gulp-if": "^2.0.2",
  "gulp-plumber": "^1.1.0",
  "gulp-rename": "^1.2.2",
  "gulp-uglify": "^2.1.2",
  "lazypipe": "^1.0.1",
  "react": "^15.6.1",
  "react-dom": "^15.6.1"
},
"engines": {
  "node": "^6.9.0",
  "yarn": "^0.21.3"
},
...
"scripts": {
  "watch": "webpack --progress --watch --display-error-details"
}
"dependencies": {
  "react": "^15.6.1",
  "react-dom": "^15.6.1"    
},
"devDependencies": {
  "babel-core": "^6.25.0",
  "babel-loader": "^7.1.1",
  "babel-preset-es2015": "^6.24.0",
  "babel-preset-react": "^6.24.0",
  "babel-register": "^6.24.0",
  "webpack": "^3.3.0"
},
"engines": {
  "node": "^6.9.0",
  "yarn": "^0.21.3"
},
...
webpack.config.js

我猜您的源文件在/src中,构建输出将转到/build

使用npm run watch启动项目

...
"scripts": {
  "watch": "webpack --progress --watch --display-error-details"
}
"dependencies": {
  "react": "^15.6.1",
  "react-dom": "^15.6.1"    
},
"devDependencies": {
  "babel-core": "^6.25.0",
  "babel-loader": "^7.1.1",
  "babel-preset-es2015": "^6.24.0",
  "babel-preset-react": "^6.24.0",
  "babel-register": "^6.24.0",
  "webpack": "^3.3.0"
},
"engines": {
  "node": "^6.9.0",
  "yarn": "^0.21.3"
},
...
const path = require('path');

module.exports = {
  entry: ["src/js/main.jsx"], // The main script entry
  output: {
    path: path.resolve(__dirname, "build"),
    filename: "js/bundle.js",
    publicPath: "/"
  },

  module: {
    rules: [
      {
        test: /\.jsx?$/,
        include: path.resolve(__dirname, "src"),
        use: 'babel-loader'
      }
    ]
  },

  resolve: {
    modules: ["node_modules", path.resolve(__dirname, "src")],
    extensions: [".js", ".jsx"],
  },
}