Jus*_*ake 9 javascript ecmascript-6 reactjs
我有两个反应应用程序(A-app,B-app)。我需要将一个组件从 A-app 导入到 B-app。但是当我尝试这样做时,我看到了这个错误。
./src/App.js
Module not found: You attempted to import ../../src/components/Dashboard/container which falls outside of the project src/ directory. Relative imports outside of src/ are not supported. You can either move it inside src/, or add a symlink to it from project's node_modules/.
Run Code Online (Sandbox Code Playgroud)
我试图在 B-app node_modules 中的这个组件上做符号链接。但它没有用。
我还尝试在根项目目录中创建 .env 文件并将其放入NODE_PATH=src/
文件中。但是这个解决方案也不起作用。
我怎样才能解决这个问题?
对不起我的英语不好。
小智 15
我在尝试解决类似问题时偶然发现了这篇文章。我认为该解决方案可能是相关的,因此我将其发布在这里。
从 NPM 2.0 开始,您可以在package.json. 这允许您在外部文件夹中维护本地模块,src/并node_modules在npm install.
将您的模块放置在 之外的任何位置src/,例如:
./packages/app-b-dashboard
Run Code Online (Sandbox Code Playgroud)
package.json使用file:前缀声明本地依赖项:
"dependencies": {
"app-b-dashboard": "file:./packages/app-b-dashboard"
}
Run Code Online (Sandbox Code Playgroud)
跑
npm install
Run Code Online (Sandbox Code Playgroud)
现在你可以在你的 A-app 中导入它
import Dashboard from 'app-b-dashboard/container'
Run Code Online (Sandbox Code Playgroud)
进入您的 A-appnode_modules文件夹并运行以下命令
ln -s ../../../src/components/Dashboard ./app-b-dashboard
Run Code Online (Sandbox Code Playgroud)
在文件夹中创建以下符号链接后,node_modules您可以import在 A-app 中
import Dashboard from 'app-b-dashboard/container'
Run Code Online (Sandbox Code Playgroud)
根据项目的具体布局,名称可能会有所不同。根据您提供的信息,这是我的最佳猜测。