无法在 Gulp 项目中导入 React Router Dom

Posted

技术标签:

【中文标题】无法在 Gulp 项目中导入 React Router Dom【英文标题】:Can not Import React Router Dom In Gulp Project 【发布时间】:2017-11-09 16:52:16 【问题描述】:

这是我对 gulp 的第一次体验。我尝试在我的index.jsx 中导入react-route-dom。但是当我尝试导入它时,我遇到了这个错误消息:

'react-router-dom' 由 projectMyAccount.Site\project.MyAccount.Site.Desktop\scripts\js\desktop\bundle\app.js 导入,但无法解析 - 将其视为外部依赖项 在 options.globals 中没有为外部模块“react-router-dom”提供名称——猜测是“reactRouterDom”

索引 Jsx:

import Index from '../pages/MyAccount/Index';
import Support  from '../pages/Support/Index';
import BrowserRouter as Router, Route,Link from 'react-router-dom';

class Pager extends React.Component 

    constructor(props)
        super(props);
    

    render()
        <Router>
     <div>
         <ul>
             <li><Link to="/test1">Home</Link></li>
             <li><Link to="/about-us">About Use</Link></li>
         </ul>

         <hr/>

         <Route path="/hesabim" component=Index/>
         <Route path="/about" component=Support/>
     </div>
 </Router>
    
;

主要的 gulp 任务:

gulp.task('es6', function () 
  return gulp.src(filePath + '/scripts/js/**/*.js')
        .pipe(babel())
        .pipe(gulp.dest(filePath + '/scripts/js'));
);

gulp.task('react', function () 
    return gulp.src(filePath + '/scripts/jsx/**/*.jsx')
        .pipe(react(harmony: false, es6module: true))
        .pipe(gulp.dest(filePath + '/scripts/js/'));
);

gulp.task('create-app', function () 
  return gulp.src([
      filePath + '/Scripts/js/desktop/pages/Index.js'
    ])
    .pipe(concatJs("hepsiburada.js"))
    .pipe(gulp.dest(filePath + '/scripts/js/desktop/bundle'))
    .pipe(rollup(
      allowRealFiles: true,
      "format": "iife",
      "plugins": [
        require("rollup-plugin-babel")(
          "presets": [["es2015",  "modules": false ]],
          "plugins": ["external-helpers"]
        )
      ],
      entry: filePath + '/scripts/js/desktop/bundle/app.js'
    ))
    .pipe(gulp.dest(filePath + '/build/scripts/'));
);

怎么了?我是否必须为 gulp 导入另一个包?我不清楚。我可以像这样将它与 unpkg 包一起使用:

import Index from '../pages/MyAccount/Index';
import Support  from '../pages/Support/Index';
class Pager extends React.Component 

    constructor(props)
        super(props);
    

    render()

        const Router = ReactRouterDOM.BrowserRouter;
        const Link = ReactRouterDOM.Link;
        const Route = ReactRouterDOM.Route;

        return (<Router>
     <div>
         <ul>
             <li><Link to="/test1">Home</Link></li>
             <li><Link to="/about-us">About Use</Link></li>
         </ul>

         <hr/>

         <Route path="/hesabim" component=Index/>
         <Route path="/about" component=Support/>
     </div>
 </Router>);
    

;

但我认为长期不利于发展。如何从节点模块实现它?

【问题讨论】:

【参考方案1】:

看起来您可能需要将 rollup-plugin-node-resolve 添加到您的 gulp 中。在这里查看可能的答案:gulp rollup not working external resource import

【讨论】:

在我这样做之后我得到另一个错误Error: 'default' is not exported by node_modules\history\createBrowserHistory.js 好的!在我添加汇总 commonjs 后,问题已得到解决。非常感谢。

以上是关于无法在 Gulp 项目中导入 React Router Dom的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 React 中导入组件

如何在android studio中导入react native项目

如何在 typescript react-native 项目中导入降价文件?

在 React TypeScript 组件中导入 Javascript

在 Next.js 中导入 react-hook-mousetrap 时出现“无法在模块外使用 import 语句”错误

javascript Gulp任务解决shopify中导入sass文件的问题