webpack resolve.root设置'cant find module'问题

时间:2016-03-06 11:07:18

标签: webpack

这是一个用于捆绑jsx文件的webpack的反应项目,文件夹树的列表如下:

.
|-- app
|   |-- client.jsx
│   |-- components
|     | -- ArticleCommentListItem.jsx
|     | -- ArticleCommentListItemFooter.jsx
|-- server
|   | -- index.js
|-- webpack
|   |-- webpack.config.js

首先,文件 ArticleCommentListItem.jsx 将调用模块 ArticleCommentListItemFooter.jsx ,如下所示

import ArticleCommentListItemFooter from './ArticleCommentListItemFooter';

Resolving require paths with webpack上阅读 Alex Klibisz 的答案后。我想尝试将模块称为格式:

import ArticleCommentListItemFooter from 'components/ArticleCommentListItemFooter';

然后我在 webpack.config.js 文件中设置

var webpack_config = {
  entry:{
    app: path.join(__dirname, '..', 'app', 'client')
  },
  output: {
    path: assetsPath,
    filename: '[name].js',
    publicPath: '/assets/'
  },
  resolve: {
    extensions: ['', '.js', '.jsx', '.scss', '.less'],
    root: path.resolve(__dirname, '..', 'app'),
    modulesDirectories: [
      'node_modules'
    ]
  }
}

将client.jsx捆绑到app.js时,一切运行良好,但是当我使用命令node server/index.js启动服务器时。它将以错误退出

error: Cannot find module 'components/ArticleCommentListItemFooter'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:289:25)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/Users/ryu/Documents/git/react/react-blog/app/components/ArticleCommentListItem.jsx:21:37)
    at Module._compile (module.js:425:26)
    at loader (/Users/ryu/Documents/git/react/react-blog/node_modules/babel-register/lib/node.js:128:5)
    at Object.require.extensions.(anonymous function) [as .jsx] (/Users/ryu/Documents/git/react/react-blog/node_modules/babel-register/lib/node.js:138:7)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)

我还尝试使用resolve.alias进行webpack.config设置,但仍然会以相同的错误退出。

resolve: {
  extensions: ['', '.js', '.jsx', '.scss', '.less'],
  alias: {
    components: path.join(__dirname, '..', 'app', 'components')
  },
  modulesDirectories: [
    'node_modules', 'app'
  ]
}

我无法弄清楚我犯了哪个错误。

1 个答案:

答案 0 :(得分:1)

〜删除&#34; ..&#34;之前&#34; app&#34;然后再试一次〜

<强>更新

resolve.rootresolve.alias仅适用于webpack在其上运行的脚本。

您的server / index.js不知道这两个值是否存在。所以它不知道如何找到组件/ something.jsx&#39;。你应该也可以通过webpack解析服务器js?