Reactjs React-导入依赖于已在package.json上的其他依赖项时出错
在我的Reactjs React-导入依赖于已在package.json上的其他依赖项时出错,reactjs,npm,dependencies,circular-dependency,stealjs,Reactjs,Npm,Dependencies,Circular Dependency,Stealjs,在我的package.json上,我有以下依赖项: "dependencies": { "@my-company-repository/componentXPTO": "19.8.5", "@my-company-repository/commonComponents": "18.0.2", "react": "16.12.0", "react-dom": "16.12.0", "react-view-model": "^1.0.1", "rea
package.json上,我有以下依赖项:
"dependencies": {
"@my-company-repository/componentXPTO": "19.8.5",
"@my-company-repository/commonComponents": "18.0.2",
"react": "16.12.0",
"react-dom": "16.12.0",
"react-view-model": "^1.0.1",
"react-virtualized": "9.21.0",
"react-virtualized-tree": "3.1.0",
"steal": "^2.1.11",
"bundleDependencies": false,
"deprecated": false,
"peerDependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0"
},
"dependencies": {
"@my-company-repository/commonComponents": "^17.44.6",
"react-redux": "^5.1.1",
"react-router-dom": "^4.3.1",
"react-scripts": "^3.1.1",
"redux": "^4.0.4",
"bundleDependencies": false,
"deprecated": false,
"peerDependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0"
},
"dependencies": {
"react-redux": "^5.1.1",
"react-router-dom": "^4.3.1",
"react-scripts": "^3.1.1",
"redux": "^4.0.4",
在node\u模块上安装npm
后,@my company repository/componentXPTO
显示具有以下依赖项:
"dependencies": {
"@my-company-repository/componentXPTO": "19.8.5",
"@my-company-repository/commonComponents": "18.0.2",
"react": "16.12.0",
"react-dom": "16.12.0",
"react-view-model": "^1.0.1",
"react-virtualized": "9.21.0",
"react-virtualized-tree": "3.1.0",
"steal": "^2.1.11",
"bundleDependencies": false,
"deprecated": false,
"peerDependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0"
},
"dependencies": {
"@my-company-repository/commonComponents": "^17.44.6",
"react-redux": "^5.1.1",
"react-router-dom": "^4.3.1",
"react-scripts": "^3.1.1",
"redux": "^4.0.4",
"bundleDependencies": false,
"deprecated": false,
"peerDependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0"
},
"dependencies": {
"react-redux": "^5.1.1",
"react-router-dom": "^4.3.1",
"react-scripts": "^3.1.1",
"redux": "^4.0.4",
和@my company repository/commonComponents
具有以下功能:
"peerDependencies": {
"react": "16.12.0",
"react-dom": "16.12.0"
},
注意:我需要@my company repository/componentXPTO
和@my company repository/commonComponents
然后我创建了这个组件,我想在其中使用@my company repository/componentXPTO
:
import React, { Component } from "react";
import FancyComponent from '@my-company-repository/componentXPTO';
class MyComponentWithFancyC extends Component {
render() {
return (
<div className="my-container">
<span>some text</span>
</div>
);
}
}
export default MyComponentWithFancyC;
有人知道问题出在哪里吗
我已经删除了node\u模块
,并重新安装了它,错误依然存在。我已经创建了一个新的blank react项目,其中我只使用了@my company repository/componentXPTO
(没有@my company repository/componentXPTO
上的json
)依赖项,并且工作正常
我不知道如何解决这个问题……我终于想出了办法
起初,似乎@my company repository/componentXPTO/node\u modules/@my company repository/commonComponents
导致在@my company repository/componentXPTO/node\u modules/
文件夹中查找react
时出现问题。但是,react
不存在,因为它是一个peerDependency
所以我需要通过StealJS重新映射。为此,在我的package.json
中,我添加了一个StealJS配置:
"steal": {
"paths": {
"@my-company-repository/componentXPTO/node_modules/react/*": "node_modules/react/*.js",
"@my-company-repository/componentXPTO/node_modules/react-dom/*": "node_modules/react-dom/*.js"
}
在那之后,一些其他的问题出现了,但是因为有一个依赖也作为另一个依赖的依赖。所以我从另一个依赖项中删除了这个依赖项。为此,我在根文件夹上创建了一个postInstall.js
文件,其中包含以下代码:
const pj = __dirname + "/node_modules/@my-company-repository/componentXPTO/package.json";
const contents = fs.readFileSync(pj);
const pkg = JSON.parse(contents);
delete pkg.dependencies["@my-company-repository/commonComponents"];
fs.writeFileSync(pj, JSON.stringify(pkg));
然后我在我的包.json中添加了一个脚本,以便在npm安装之后运行这个新代码:
"scripts": {
"install": "node postInstall"
现在@my company repository/componentXPTO
显示了以下依赖项:
"dependencies": {
"@my-company-repository/componentXPTO": "19.8.5",
"@my-company-repository/commonComponents": "18.0.2",
"react": "16.12.0",
"react-dom": "16.12.0",
"react-view-model": "^1.0.1",
"react-virtualized": "9.21.0",
"react-virtualized-tree": "3.1.0",
"steal": "^2.1.11",
"bundleDependencies": false,
"deprecated": false,
"peerDependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0"
},
"dependencies": {
"@my-company-repository/commonComponents": "^17.44.6",
"react-redux": "^5.1.1",
"react-router-dom": "^4.3.1",
"react-scripts": "^3.1.1",
"redux": "^4.0.4",
"bundleDependencies": false,
"deprecated": false,
"peerDependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0"
},
"dependencies": {
"react-redux": "^5.1.1",
"react-router-dom": "^4.3.1",
"react-scripts": "^3.1.1",
"redux": "^4.0.4",
这一个的其他依赖项在我的projectnode\u modules
文件夹中查找react
。通常位置0处的JSON中的意外标记<
错误意味着加载的是HTML文件(通常是404页),而不是package.JSON文件。您可以查看DevTools的“网络”选项卡并查看steal试图从哪个路径加载react吗?@ChasenLeHara感谢您提供的提示,但问题已经解决