Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从React Redux(创建React应用程序)中的package.json获取版本号_Node.js_Reactjs_Npm_React Redux_Create React App - Fatal编程技术网

Node.js 从React Redux(创建React应用程序)中的package.json获取版本号

Node.js 从React Redux(创建React应用程序)中的package.json获取版本号,node.js,reactjs,npm,react-redux,create-react-app,Node.js,Reactjs,Npm,React Redux,Create React App,OP EDIT:如果其他人遇到此问题:应用程序是使用创建的,这将限制导入到src文件夹中。但是,如果您使用它,您可以访问package.json。 我正在尝试从我的应用程序中的package.json获取版本号 我已经尝试过了,但是没有一个成功,因为我无法从src文件夹之外访问package.json(可能是因为React,我是新手)。将package.json移动到src意味着我无法从根文件夹运行npm安装,npm版本次要,以及npm运行构建。我尝试过使用process.env.npm\u p

OP EDIT:如果其他人遇到此问题:应用程序是使用创建的,这将限制导入到src文件夹中。但是,如果您使用它,您可以访问package.json。

我正在尝试从我的应用程序中的package.json获取版本号


我已经尝试过了,但是没有一个成功,因为我无法从src文件夹之外访问package.json(可能是因为React,我是新手)。将package.json移动到src意味着我无法从根文件夹运行
npm安装
npm版本次要
,以及
npm运行构建
。我尝试过使用
process.env.npm\u package\u版本
,但结果是未定义

我使用的是Jenkins,我还没有设置它来推动提交,但我唯一的想法是从GitLab中的标签获取版本,但我不知道如何做到这一点,这会给repo增加不必要的依赖性,所以我真的想找到一个替代方案

编辑: 我的文件结构如下:

--> RootAppFolder
    |--> build
    |--> node_modules
    |--> public
    |--> src
         |--> Components
              |--> Root.js
    |
    |--> package.json
因此,要从Root.js访问package.json,我必须从'/../../../package.json'导入packageJson,然后出现以下错误:

./src/components/Root.js

未找到模块:您试图导入 ../../../package.json,不属于项目src/ 目录不支持src/之外的相对导入。你可以 将其移动到src/内,或从项目的 节点\模块/

试试这个

// in package.json
"version": "1.0.0"

// in index.js
import packageJson from '../package.json';
console.log(packageJson.version); // "1.0.0"

根据您的编辑,我建议您尝试:

从“/package.json”导入packageJson;
您还可以尝试创建符号链接:

从项目根目录中。 cd-src;ln-s../package.json package.alias.json 列出src目录的内容,您将看到符号链接

ls
#=>package.alias.json->../package.json
添加
.alias
有助于减少在查看此信息时对他人和未来自我的“魔力”。此外,它还可以帮助文本编辑器将它们分开。以后你会感谢我的。只需确保将JS代码更新为从
/package.alias.json
导入,而不是从
/package.json
导入即可

另外,请看一下这个问题:
解决此问题时,无需将
package.json导入
createreact应用程序

需要:创建react应用程序的

.env

REACT_APP_VERSION=$npm_package_version
REACT_APP_NAME=$npm_package_name
console.log(`${process.env.REACT_APP_NAME} ${process.env.REACT_APP_VERSION}`)
index.js

REACT_APP_VERSION=$npm_package_version
REACT_APP_NAME=$npm_package_name
console.log(`${process.env.REACT_APP_NAME} ${process.env.REACT_APP_VERSION}`)
注意:可以访问该版本(以及许多其他版本)


注2:只有在您

之后才会选择对
.env
文件所做的更改。我认为通过“导入”或“要求”包获取版本是不正确的。 您可以在package.json中添加脚本

"start": "REACT_APP_VERSION=$npm_package_version react-app-script start",
您可以通过任何js文件中的“process.env.REACT\u APP\u VERSION”获得它

它也适用于构建脚本,如下所示:

"build": "REACT_APP_VERSION=$npm_package_version react-app-script build",
import package.json 一般来说,导入
package.json
并不好。原因:安全性和捆绑包大小问题

是的,对于从“../package.json”
导入包json”和从“../package.json”导入{version},最新的网页包(默认配置)+ES6
import
会进行树抖动(即只包含
的“version”
值,而不是整个
package.json
)。但如果您使用CommonJS(
require()
),或者更改了您的网页包配置,或者使用了另一个bundler/transpiler,则不能保证这一点。依靠bundler的树抖动来隐藏敏感数据是很奇怪的。如果您坚持导入
package.json
,但不希望整个
package.json
公开,则可能需要添加一些生成后检查,以确保删除
package.json
中的其他值

然而,对于那些
package.json
毕竟是公开的开源项目,这里的安全问题仍然是理论上的。如果安全性和捆绑包大小都没有问题,或者,不保证的树抖动对您来说已经足够好了,那么继续)

环境署署长
.env
方法,如果有效,那么它是好的,但是如果您不使用
create react app
,您可能需要安装
dotenv
并进行一些额外的配置。还有一个小问题:不建议提交
.env
文件(and),但如果使用
.env
方法,看起来您必须提交该文件,因为它可能对您的程序的运行至关重要

最佳实践(可论证) (这主要不是针对
create react app
,但您仍然可以使用或在cra中配置
webpack

如果使用
网页
,则:

您现在可以在前端程序(开发或生产)中使用
console.log(process.env.VERSION)

(您可以简单地使用
VERSION
而不是
process.env.VERSION
,但它通常需要额外的配置来满足linters:add
globals:{VERSION:'readonly'}
中的
.eslintrc
();add
声明变量VERSION:string;
中的
.d.ts
文件以用于TypeScript)

虽然它是“npm\u-package\u版本”,但它也适用于
纱线。给你


其他捆绑包可能也有类似的插件,例如。

您是否也尝试过es6版本?“我无法从src文件夹外访问package.json”——您能解释一下吗?如果可以访问
package.json
,则可以轻松检索版本号。@kenfire你是什么意思?我对ES6不是很熟悉。@shaochuancs我编辑过解释。将package.json移动到src文件夹中可以获得版本,但是我无法运行任何npm命令来实际构建和运行应用。@shaochuancs是的,结果表明应用程序是使用react create app创建的