【问题标题】:How to import from subdirectory from a node_module?如何从 node_module 的子目录导入?
【发布时间】:2017-02-20 00:32:48
【问题描述】:

我正在使用create-react-app,我有一行说:

import createHistory from 'history/lib/createBrowserHistory'

但这不起作用并且会引发错误:

Error in ./src/deps/history.js.
Module not found: 'history/lib/createBrowserHistory' 
in /home/aurimus/Apps/projects/my-project/src/deps

create-react-app 是不是特别不支持这个?我该如何规避这种情况?

***更新***

更正库的 url 后(使用过时的教程),我仍然没有导入任何内容,createBrowserHistoryundefined

我正在使用附加文件来抽象​​import

deps/history.js 中

import createBrowserHistory from 'history/createBrowserHistory.js'
export default createBrowserHistory

index.js

import history from './deps/history';
history.listen(render); // history is undefined

我做错了什么吗?

【问题讨论】:

    标签: reactjs ecmascript-6 history.js create-react-app


    【解决方案1】:

    create-react-app 是不是特别不支持这个?

    不,这与create-react-app无关。

    我该如何规避这个问题?

    错误告诉你问题出在哪里:

    找不到模块:'history/lib/createBrowserHistory'

    这意味着history/lib/createBrowserHistory 不存在,即您使用了错误的路径。

    我安装了history,查看包内容,发现createBrowserHistory文件位于包的根目录下(其实没有lib/目录)。这意味着您要导入history/createBrowserHistory

    【讨论】:

    • 谢谢,这解决了未找到的问题,但现在导入后仍然未定义。有什么建议么?更新了问题
    • @Aurimas:查看文件并检查它导出的内容和方式。 history 不应该是 undefined,但 history.listen 可能是。该文件导出一个函数,而不是一个对象。该函数返回一个具有listen 属性的对象,因此您需要先调用该函数。如果您不知道模块正在导出什么值,请查看其来源。
    • 如果你能对以下问题说点什么:stackoverflow.com/questions/42356481/…
    【解决方案2】:

    来自history docs

    Using npm:
    
    $ npm install --save history
    Then with a module bundler like webpack, use as you would anything else:
    
    // using ES6 modules
    import createHistory from 'history/createBrowserHistory'
    
    // using CommonJS modules
    var createHistory = require('history').createBrowserHistory
    

    【讨论】:

      【解决方案3】:

      感谢 Felix:

      deps/history.js

      import createBrowserHistory from 'history/createBrowserHistory.js'
      export default createBrowserHistory()
      

      然后在index.js

      import history from './deps/history';
      ...
      ...
      history.listen(render); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-10
        • 2010-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多