2016-01-24 85 views
2

HelloWorld项目生成错误我想通过学习下面的指令作出反应本土发展:ReactNativeCli初始化与巴贝尔TransformError

nvm install v4.2.6 
nvm alias default v4.2.6 
npm install -g react-native-cli 
react-native init RNApp 
cd RNAPP 

然后我打开iOS应用项目和编译程序。然后我得到跟踪错误:

... 
++ NVM_NPM_PREFIX=/Users/user/.nvm/versions/node/v4.2.6 
++ nvm_tree_contains_path /Users/user/.nvm /Users/user/.nvm/versions/node/v4.2.6 
++ '[' -n '' ']' 
+ [[ -x /Users/user/.nodenv/bin/nodenv ]] 
+ react-native bundle --entry-file index.ios.js --platform ios --dev true --bundle-output /Users/user/Library/Developer/Xcode/DerivedData/RNApp-ckxusxiznabgxxcrqessfpbjyrks/Build/Products/Debug-iphonesimulator/RNApp.app/main.jsbundle --assets-dest /Users/user/Library/Developer/Xcode/DerivedData/RNApp-ckxusxiznabgxxcrqessfpbjyrks/Build/Products/Debug-iphonesimulator/RNApp.app 
bundle: Created ReactPackager 
uncaught error Error: ReferenceError: [BABEL] /Users/user/Desktop/RNApp/node_modules/react-native/node_modules/react-transform-hmr/node_modules/react-proxy/node_modules/react-deep-force-update/lib/index.js: Unknown option: /Users/user/Desktop/RNApp/node_modules/react-native/node_modules/react-transform-hmr/node_modules/react-proxy/node_modules/react-deep-force-update/.babelrc.stage 
    at Logger.error (/Users/user/Desktop/RNApp/node_modules/react-native/node_modules/babel-core/lib/transformation/file/logger.js:41:11) 
    at OptionManager.mergeOptions (/Users/user/Desktop/RNApp/node_modules/react-native/node_modules/babel-core/lib/transformation/file/options/option-manager.js:262:18) 
    at OptionManager.addConfig (/Users/user/Desktop/RNApp/node_modules/react-native/node_modules/babel-core/lib/transformation/file/options/option-manager.js:221:10) 
    at OptionManager.findConfigs (/Users/user/Desktop/RNApp/node_modules/react-native/node_modules/babel-core/lib/transformation/file/options/option-manager.js:364:16) 
    at OptionManager.init (/Users/user/Desktop/RNApp/node_modules/react-native/node_modules/babel-core/lib/transformation/file/options/option-manager.js:412:12) 
    at File.initOptions (/Users/user/Desktop/RNApp/node_modules/react-native/node_modules/babel-core/lib/transformation/file/index.js:191:75) 
    at new File (/Users/user/Desktop/RNApp/node_modules/react-native/node_modules/babel-core/lib/transformation/file/index.js:122:22) 
    at Pipeline.transform (/Users/user/Desktop/RNApp/node_modules/react-native/node_modules/babel-core/lib/transformation/pipeline.js:42:16) 
    at transform (/Users/user/Desktop/RNApp/node_modules/react-native/packager/transformer.js:59:24) 
TransformError: /Users/user/Desktop/RNApp/node_modules/react-native/node_modules/react-transform-hmr/node_modules/react-proxy/node_modules/react-deep-force-update/lib/index.js: [BABEL] /Users/user/Desktop/RNApp/node_modules/react-native/node_modules/react-transform-hmr/node_modules/react-proxy/node_modules/react-deep-force-update/lib/index.js: Unknown option: /Users/user/Desktop/RNApp/node_modules/react-native/node_modules/react-transform-hmr/node_modules/react-proxy/node_modules/react-deep-force-update/.babelrc.stage 
See logs /var/folders/g9/m3cmg0m10cl80xt362wpsld00000gn/T/react-packager.log 
    at SocketClient._handleMessage (SocketClient.js:139:23) 
    at BunserBuf.<anonymous> (SocketClient.js:53:42) 
    at emitOne (events.js:77:13) 
    at BunserBuf.emit (events.js:169:7) 
    at BunserBuf.process (/Users/user/Desktop/RNApp/node_modules/react-native/node_modules/bser/index.js:289:10) 
    at /Users/user/Desktop/RNApp/node_modules/react-native/node_modules/bser/index.js:244:12 
    at nextTickCallbackWith0Args (node.js:419:9) 
    at process._tickCallback (node.js:348:13) 
Command /bin/sh failed with exit code 1 

我做错了什么?或者只是在babel中有反应原生支持的错误?

➜ RNApp react-native --version 
react-native-cli: 0.1.10 
react-native: 0.18.1 

但似乎run-android是工作的罚款:

:app:generateDebugSources 
:app:processDebugJavaRes UP-TO-DATE 
:app:compileDebugJavaWithJavac 
:app:compileDebugNdk UP-TO-DATE 
:app:compileDebugSources 
:app:preDexDebug 
:app:dexDebug 
:app:validateDebugSigning 
:app:packageDebug 
:app:zipalignDebug 
:app:assembleDebug 
:app:installDebug FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':app:installDebug'. 
> com.android.builder.testing.api.DeviceException: No connected devices! 

回答

4

此问题的根本原因是阵营本地使用巴贝尔6,其上不再.babelrc文件中使用stage选项,并react-deep-force-update,React Native的子依赖项仍然声明带有该选项的.babelrc文件。

这是任何第三方模块的问题,它们在自己的构建过程中仍然使用旧的Babel,并且不清除npm发布的配置文件。

我已经通过添加以下NPM运行脚本来我package JSON围绕这一问题的工作:

"scripts": { 
    "clean:babelrc": "find ./node_modules -name react-packager -prune -o -name '.babelrc' -print | xargs rm -f", 
    "postinstall": "npm run clean:babelrc" 
} 

脚本核武器的node_modules目录下的所有.babelrc文件每npm install后,除了react-packager目录下的一个,这是React Native packager用来配置自己的babel规则。

问题是tracked on React Native GitHub repository

+0

谢谢,它适用于我。 –

0

我更新了npm包。

react-proxy ==> 1.1.2

react-deep-force-update ==> 2.0.1

您需要删除软件包第一个文件node_modules。然后安装新版本。

它适用于我。