facebook / react-native

A framework for building native applications using React
https://reactnative.dev
MIT License
118.18k stars 24.21k forks source link

CLI: unexpected token '?' #34768

Closed harrymash2006 closed 1 year ago

harrymash2006 commented 1 year ago

Description

Hi guys,

just created a new project and it is throwing this error when doing archive on iOS and when doing build on Android

Showing Recent Messages

/Users/hardik/Documents/GitHub/ReactNApp/node_modules/@react-native-community/cli/build/index.js:156

cmd.option(opt.name, opt.description ?? '', opt.parse || (val => val), typeof opt.default === 'function' ? opt.default(rest[0]) : opt.default);

Please advice how to fix this. thanks

Version

0.70.1

Output of npx react-native info

System: OS: macOS 13.0 CPU: (8) x64 Intel(R) Core(TM) i5-1038NG7 CPU @ 2.00GHz Memory: 365.09 MB / 16.00 GB Shell: 5.8.1 - /bin/zsh Binaries: Node: 16.15.0 - ~/.nvm/versions/node/v16.15.0/bin/node Yarn: 1.17.3 - /usr/local/bin/yarn npm: 8.5.5 - ~/.nvm/versions/node/v16.15.0/bin/npm Watchman: 2022.02.28.00 - /usr/local/bin/watchman Managers: CocoaPods: 1.11.3 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: DriverKit 21.4, iOS 16.0, macOS 12.3, tvOS 16.0, watchOS 9.0 Android SDK: API Levels: 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 Build Tools: 29.0.2, 29.0.3, 30.0.1, 30.0.2, 30.0.3, 31.0.0, 32.0.0, 33.0.0 System Images: android-21 | Google APIs Intel x86 Atom, android-22 | Google APIs Intel x86 Atom, android-23 | Google APIs Intel x86 Atom, android-23 | Google APIs Intel x86 Atom_64, android-24 | Android TV Intel x86 Atom, android-24 | Intel x86 Atom, android-24 | Google Play Intel x86 Atom, android-25 | Google APIs ARM EABI v7a, android-25 | Google APIs Intel x86 Atom, android-25 | Google Play Intel x86 Atom, android-26 | Google Play Intel x86 Atom, android-27 | Intel x86 Atom, android-27 | Intel x86 Atom_64, android-27 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Intel x86 Atom_64, android-28 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom, android-28 | Google Play Intel x86 Atom_64, android-29 | Google APIs Intel x86 Atom, android-29 | Google APIs Intel x86 Atom_64, android-29 | Google Play Intel x86 Atom, android-29 | Google Play Intel x86 Atom_64, android-30 | Google Play Intel x86 Atom, android-31 | Google Play Intel x86 Atom_64, android-N | Android Wear ARM EABI v7a, android-N | Android Wear Intel x86 Atom, android-N | Intel x86 Atom, android-N | Intel x86 Atom_64 Android NDK: 21.3.6528147 IDEs: Android Studio: 2021.3 AI-213.7172.25.2113.9014738 Xcode: 14.0/14A309 - /usr/bin/xcodebuild Languages: Java: 18.0.2 - /usr/bin/javac npmPackages: @react-native-community/cli: Not Found react: 18.1.0 => 18.1.0 react-native: 0.70.1 => 0.70.1 react-native-macos: Not Found npmGlobalPackages: react-native: Not Found

Steps to reproduce

Trying to build on Android Archive on iOS for app store upload

Snack, code example, screenshot, or link to a repository

https://pasteboard.co/jF639A0h1o6b.png

saravanakumargn commented 1 year ago

I am getting this Error in Xcode while building & Archive.

/node_modules/@react-native-community/cli/build/index.js:156
    cmd.option(opt.name, opt.description ?? '', opt.parse || (val => val), typeof opt.default === 'function' ? opt.default(rest[0]) : opt.default);
                                          ^

SyntaxError: Unexpected token '?'
    at wrapSafe (internal/modules/cjs/loader.js:1072:16)
    at Module._compile (internal/modules/cjs/loader.js:1122:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
+ [[ '' != true ]]
+ cp /Users/saravanakumar/Library/Developer/Xcode/DerivedData/ReactNative-exomamucwknejgecicizjaevjbgd/Build/Products/Release-iphonesimulator/main.jsbundle /Users/saravanakumar/Library/Developer/Xcode/DerivedData/ReactNative-exomamucwknejgecicizjaevjbgd/Build/Products/Release-iphonesimulator/ReactNative.app/
cp: /Users/saravanakumar/Library/Developer/Xcode/DerivedData/ReactNative-exomamucwknejgecicizjaevjbgd/Build/Products/Release-iphonesimulator/main.jsbundle: No such file or directory
+ BUNDLE_FILE=/Users/saravanakumar/Library/Developer/Xcode/DerivedData/ReactNative-exomamucwknejgecicizjaevjbgd/Build/Products/Release-iphonesimulator/ReactNative.app/main.jsbundle
+ [[ false != true ]]
+ [[ ! -f /Users/saravanakumar/Library/Developer/Xcode/DerivedData/ReactNative-exomamucwknejgecicizjaevjbgd/Build/Products/Release-iphonesimulator/ReactNative.app/main.jsbundle ]]
+ echo 'error: File /Users/saravanakumar/Library/Developer/Xcode/DerivedData/ReactNative-exomamucwknejgecicizjaevjbgd/Build/Products/Release-iphonesimulator/ReactNative.app/main.jsbundle does not exist. This must be a bug with React Native, please report it here: https://github.com/facebook/react-native/issues'
error: File /Users/saravanakumar/Library/Developer/Xcode/DerivedData/ReactNative-exomamucwknejgecicizjaevjbgd/Build/Products/Release-iphonesimulator/ReactNative.app/main.jsbundle does not exist. This must be a bug with React Native, please report it here: https://github.com/facebook/react-native/issues
+ exit 2

Output of npx react-native info

info Fetching system and libraries information...
System:
    OS: macOS 12.6
    CPU: (16) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 72.03 MB / 16.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 16.15.1 - ~/.nvm/versions/node/v16.15.1/bin/node
    Yarn: 1.22.5 - /usr/local/bin/yarn
    npm: 8.11.0 - ~/.nvm/versions/node/v16.15.1/bin/npm
    Watchman: 2022.01.03.00 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.11.2 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: DriverKit 21.4, iOS 15.5, macOS 12.3, tvOS 15.4, watchOS 8.5
    Android SDK:
      API Levels: 23, 26, 28, 30, 31, 33
      Build Tools: 22.0.1, 28.0.3, 29.0.2, 29.0.3, 30.0.2, 30.0.3, 31.0.0
      System Images: android-R | Google APIs Intel x86 Atom, android-R | Google Play Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: 2020.3 AI-203.7717.56.2031.7678000
    Xcode: 13.4.1/13F100 - /usr/bin/xcodebuild
  Languages:
    Java: 11.0.13 - /Library/Java/JavaVirtualMachines/jdk-11.0.13.jdk/Contents/Home/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 18.2.0 => 18.2.0 
    react-native: ^0.70.1 => 0.70.1 
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found
cortinico commented 1 year ago

/Users/hardik/Documents/GitHub/ReactNApp/node_modules/@react-native-community/cli/build/index.js:156

cmd.option(opt.name, opt.description ?? '', opt.parse || (val => val), typeof opt.default === 'function' ? opt.default(rest[0]) : opt.default);

Hi @harrymash2006 Thanks for reporting this issue.

It seems like this issue is related to the CLI. Can I ask you to open another issue against this other repository:

https://github.com/react-native-community/cli/issues

Please link against this one and we'll sort things out.

mantegnous commented 1 year ago

same bug after updating to react 0.70.1 from 0.67.4

if i do npx react-native info, the cmd return me: Unexpected token '?'

JamesKEbert commented 1 year ago

I also ran into this! The issue at least in my case was the node export was pointing to the default installed version on the Mac, NOT the nvm managed version. On iOS this can be seen by a log Node found at: ${NODE_BINARY}. This was due to not having a .xcode.env file (whoops RN updating and missed this) and not having my NVM_DIR set in my bash path settings (since Xcode uses bash instead of zsh), which I did via these instructions. This might not be the exact issue observed here, but maybe it helps somebody!

mantegnous commented 1 year ago

Update note js to 16 resolve this problem

saravanakumargn commented 1 year ago

Update to NodeJS 16 is the solution for SyntaxError: Unexpected token '?' and not i am able to build the App using XCode.

theonetheycallneo commented 1 year ago

Yes, I'm seeing this as well... I tried these node versions:

nvm use 16.13.1 nvm use 16.17.1 nvm use 18.9.1

[!] Invalid `Podfile` file: 859: unexpected token at 'info Run CLI with --verbose flag for more details.
'.

 #  from /Users/neo/Projects/vatom-inc/wallet/apps/wallet/ios/Podfile:44
 #  -------------------------------------------
 #    use_expo_modules!
 >    config = use_native_modules!
 #
 #  -------------------------------------------
Couldn't install Pods. Updating the Pods project and trying again...
Command `pod install` failed.
└─ Cause: Invalid `Podfile` file: 859: unexpected token at 'info Run CLI with --verbose flag for more details.
'.

 #  from /Users/neo/Projects/vatom-inc/wallet/apps/wallet/ios/Podfile:44
 #  -------------------------------------------
 #    use_expo_modules!
 >    config = use_native_modules!
 #
 #  -------------------------------------------

I confirmed the node -v is in my path as well:

 ➜  node -v
v16.13.1
➜  which node
/Users/neo/.nvm/versions/node/v16.13.1/bin/node
 npx react-native info
warn Package @sentry/react-native contains invalid configuration: "dependency.platforms.ios.sharedLibraries" is not allowed,"dependency.hooks" is not allowed. Please verify it's properly linked using "react-native config" command and contact the package maintainers about this.
warn Package react-native-flipper contains invalid configuration: "dependency.platforms.ios.project" is not allowed. Please verify it's properly linked using "react-native config" command and contact the package maintainers about this.
info Fetching system and libraries information...
System:
    OS: macOS 12.6
    CPU: (10) arm64 Apple M1 Max
    Memory: 4.37 GB / 64.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 16.13.1 - ~/.nvm/versions/node/v16.13.1/bin/node
    Yarn: 1.22.19 - ~/Projects/vatom-inc/wallet/node_modules/.bin/yarn
    npm: 8.1.2 - ~/.nvm/versions/node/v16.13.1/bin/npm
    Watchman: 2022.08.15.00 - /opt/homebrew/bin/watchman
  Managers:
    CocoaPods: 1.11.3 - /opt/homebrew/bin/pod
  SDKs:
    iOS SDK:
      Platforms: DriverKit 21.4, iOS 16.0, macOS 12.3, tvOS 16.0, watchOS 9.0
    Android SDK:
      API Levels: 29, 30, 31, 32, 33
      Build Tools: 29.0.2, 30.0.2, 30.0.3, 31.0.0, 32.0.0, 32.1.0, 33.0.0, 33.0.0
      System Images: android-30 | Intel x86 Atom_64, android-30 | Google APIs Intel x86 Atom, android-32 | Google APIs ARM 64 v8a
      Android NDK: Not Found
  IDEs:
    Android Studio: 2021.2 AI-212.5712.43.2112.8815526
    Xcode: 14.0.1/14A400 - /usr/bin/xcodebuild
  Languages:
    Java: 11.0.11 - /usr/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 18.2.0 => 18.2.0
    react-native: 0.69.5 => 0.69.5
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found
info React Native v0.70.1 is now available (your project is running on v0.69.5).
info Changelog: https://github.com/facebook/react-native/releases/tag/v0.70.1.
info Diff: https://react-native-community.github.io/upgrade-helper/?from=0.69.5.
info To upgrade, run "react-native upgrade".
alariej commented 1 year ago

Also seeing this exact issue when trying to archive app in xcode after upgrading RN from 0.69.4 to 0.70.1

Node 16 is installed via nvm. Everything worked perfectly until now.


EDIT: Solved by

1) manually removing an old version of node (in /usr/local/bin/) that was apparently used by the sh shell (default shell used by xcode) 2) linking the nvm node installation by running ln -s $(which node) /usr/local/bin/node in a sh shell

chrisribal commented 1 year ago

I had the exact same issue. Running npx react-native run-android worked fine. Opening the upgraded project in Android Studio on my Ubuntu 22.04 machine resulted in the mentioned error.

In my case, I figured out, that i had two versions of node installed:

Gradle seemed to use the system-wide Node 12 from /usr/bin/node, because it doesn't pick up the NVM Paths. So i removed it from the system via apt remove nodejs.

As expected, opening the project again in Android Studio now resulted in an error, because node was not found: Caused by: java.io.IOException: Cannot run program "node" (in directory "/home/chris/documents/my-app/android"): error=2, File or directory not found

Finally I manually linked the "system node binary" to my NVM installed version: ln -s $(which node) /usr/bin/node

Now my project is building fine. Maybe that helps.

cortinico commented 1 year ago

Closing as this issue is related to local environment setup

paulosborne commented 1 year ago

Fixed this by creating a .nvmrc containing the desired node version in the home directory.

IWSR commented 1 year ago

Update note js to 16 resolve this problem

Thanks. It works on me. If the advice is useless for someone, please make sure that you had changed the default version of node on Terminal rather than Zsh or anything else

delki8 commented 1 year ago

I had it fixed by starting my app with npx react-native start instead of react-native start.

I had one react-native installed with volta at ~/.volta/bin/react-native. Versions:

After upgrading react-native from 0.69.0 to 0.70.0 I started getting this error when I tried to start my application with react-native start: cmd.option(opt.name, opt.description ?? '', opt.parse || (val => val) [...] SyntaxError: Unexpected token '?'.

For some reason the Metro of my globally installed react-native wasn't using the node 18 I have globally installed. I checked for other node versions but they weren't there. So I removed the react-native installed with volta with volta uninstall react-native-cli and started using npx to force the react-native from within my project's node_modules to be used.

PS: I did not needed to remove my globally installed react-native, only did it to avoid confusion in the future if I forget to add the npx suffix.

Muhiddin2007 commented 11 months ago

I had the exact same issue. Running npx react-native run-android worked fine. Opening the upgraded project in Android Studio on my Ubuntu 22.04 machine resulted in the mentioned error.

In my case, I figured out, that i had two versions of node installed:

* **System-wide Node 12** (!!) via package manager (/usr/bin/node)

* **Locally NVM managed Node 17.2.0** (~/.nvm/versions/node/v17.2.0/bin/node)

Gradle seemed to use the system-wide Node 12 from /usr/bin/node, because it doesn't pick up the NVM Paths. So i removed it from the system via apt remove nodejs.

As expected, opening the project again in Android Studio now resulted in an error, because node was not found: Caused by: java.io.IOException: Cannot run program "node" (in directory "/home/chris/documents/my-app/android"): error=2, File or directory not found

Finally I manually linked the "system node binary" to my NVM installed version: ln -s $(which node) /usr/bin/node

Now my project is building fine. Maybe that helps.

Thank you, worked for me

zoobibackups commented 9 months ago

update to veroisn 18.18.2 and the issue was gone. i was using 13.2.1

viroja123 commented 7 months ago

Error : Caused by: java.lang.Exception: /home//Documents//node_modules/react-native/node_modules/@react-native-community/cli/build/index.js:119 cmd.option(opt.name, opt.description ?? '', opt.parse || (val => val), typeof opt.default === 'function' ? opt.default(rest[0]) : opt.default); ^SyntaxError: Unexpected token '?' at wrapSafe (internal/modules/cjs/loader.js:915:16) at Module._compile (internal/modules/cjs/loader.js:963:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) at Module.load (internal/modules/cjs/loader.js:863:32) at Function.Module._load (internal/modules/cjs/loader.js:708:14) at Module.require (internal/modules/cjs/loader.js:887:19) at require (internal/modules/cjs/helpers.js:74:18) at Object. (/home/Documents/app/node_modules/react-native/cli.js:13:11) at Module._compile (internal/modules/cjs/loader.js:999:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)

i tried with node v18.16.0 and v16.15.0 but still facing issue my React native version : 0.71.4 React version : 18.2.0

hebertcisco commented 6 months ago

Also seeing this exact issue when trying to archive app in xcode after upgrading RN from 0.69.4 to 0.70.1

Node 16 is installed via nvm. Everything worked perfectly until now.

EDIT: Solved by

1. manually removing an old version of node (in /usr/local/bin/) that was apparently used by the sh shell (default shell used by xcode)

2. linking the nvm node installation by running `ln -s $(which node) /usr/local/bin/node` in a sh shell

this solved it for me, thank you

qilovehua commented 5 months ago

Try and it may work(node v18.19.1):

  1. remove node_module, yarn install
  2. ./gradlew --stop
  3. ./gradlew clean & ./gradlew assembleRelease
nailsonlinux commented 5 months ago

Thanks @qilovehua and @hebertcisco, you guys actually helped me figure out what was happening.

I've migrated a project from a Mac to a Linux machine and started facing this error, on a project that was fine.

So, apparently Android Studio wasn't aware of node location. I've made a symbolic link from nvm installation to /usr/local/bin/node

redwolfgang24 commented 5 months ago

I solved this issue by using the correct version of Java, for my end I used Java 17 using sdkman.

hiscc commented 1 month ago

use this nvm alias default 18 fixed my issue