【发布时间】:2016-06-19 23:06:04
【问题描述】:
这是一个用webpack打包jsx文件的react项目,文件夹树如下:
.
|-- 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'
]
}
我不知道是哪一步出错了。
【问题讨论】:
标签: webpack