2017-08-31 46 views
4

編輯:如果有其他人遇到此問題:應用程序是使用create-react-app創建的,該應用程序限制導入到src文件夾內。但是,如果你使用upgrade react-scripts to v1.0.11,它可以讓你訪問package.json。在React Redux中從package.json獲取版本號

我想在我的應用程序中從package.json獲取版本號。

我已經試過these suggestions,但沒有人工作,因爲我無法從src文件夾外部訪問package.json(可能是由於React,我是新手)。將package.json移動到src中意味着我無法從我的根文件夾運行npm installnpm version minornpm run build。我嘗試過使用process.env.npm_package_version,但那會導致未定義。

我正在使用Jenkins,我還沒有設置它來推動提交,但我唯一的想法是從GitLab中的標籤獲取版本,但我不知道該怎麼辦那麼,它會給回購添加不必要的依賴,所以我真的很想找到替代方案。

編輯: 我的文件結構是這樣的:

--> RootAppFolder 
    |--> build 
    |--> node_modules 
    |--> public 
    |--> src 
     |--> Components 
       |--> Root.js 
    | 
    |--> package.json 

所以從Root.js訪問的package.json我要做import packageJson from './../../package.json',然後我得到以下錯誤:

./src/components/Root.js

Module not found: You attempted to import ./../../package.json 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/.

+0

你也試過es6版嗎? – kenfire

+0

「我無法從src文件夾外部訪問package.json」 - 您能解釋一下嗎?如果可以訪問'package.json',則可以輕鬆檢索版本號。 – shaochuancs

+0

@kenfire你是什麼意思?我對ES6不是很熟悉。 – Baldeep

回答

2

從您的編輯我會建議嘗試

import packageJson from '/package.json'; 

您也可以嘗試創建符號鏈接:

ln -s /path/to/file /path/to/symlink 

也來看看這個問題: The create-react-app imports restriction outside of src directory

+0

雖然導入仍然無效,但我沒有意識到該應用是使用create-react-app創建的,問題來自哪裏。所以我想,解決方案就是看看webpack並自己配置它並擺脫這種限制。 – Baldeep

+0

很高興幫助 – kenfire

5

嘗試這個。

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

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

我編輯了我的問題來解釋爲什麼沒有工作。 – Baldeep

+0

使用世博會,這對我來說就像一個魅力。我叫我的appJson,所以它是'console.log(appJson.expo.version);'。謝謝! – MC10

相關問題