同构反应与Webpack的resolve.root选项
我的React应用程序使用需要相对于我的JS文件的根,使用Webpack的resolve.root。 即我的文件结构包含以下内容:
components App.react.js containers AppContainer.react.js
在AppContainer.react.js中,我有:
import App from 'components/App.react';
这在客户端工作。 现在我试图使它是同构的。 如果我在我的server.js需要AppContainer.react.js,它说components/App.react
没有find。 节点正试图要求containers/components/App.react.js
,它不存在。 我怎样才能使Node相对于给定的目录?
编辑:我的目录结构如下所示:
css/ html/ js/ components/ App.react.js containers/ AppContainer.react.js main.js <- requires AppContainer public/ server/ server.js <- requires AppContainer
你可以使用https://github.com/halt-hammerzeit/universal-webpack 。 这将让你保持你的相同的webpackconfiguration(例如。resolve.root和任何别名),另外也帮助你走向服务器端渲染。 使用文档给出了一个很好的例子,说明如何启动和运行。
你可以尝试使用这个babel-plugin: babel-plugin-module-resolver
,
然后更改您的.babelrc如下所示:
{ "plugins": [ ["module-resolver", { "root": ["."], "alias": { "components": "./components" } }] ] }
那么你可以要求你的组件在你的server.js中import App from 'components/App.react';
你有没有尝试过
import App from '../components/App.react';
你的server.js文件在哪里? 如果它与“容器”文件夹位于同一个目录中,则可以执行./components/App.react
。
否则,你可以使用..
回到你需要find你的文件。
Examples (relative to server.js): ./ -> current directory ../ -> up one directory ../../ -> up two directories etc..
根据你的目录结构..
import App from '../js/containers/AppContainer.react';
是你想要的。