Error: Cannot read property 'replace' of undefined when building iOS Cordova

前端 未结 9 1485
醉话见心
醉话见心 2020-12-23 09:32

I created a cordova project using cordova create project hello com.hello Hello.

And added iOS platform using cordova platform add iOS. And

9条回答
  •  天涯浪人
    2020-12-23 10:14

    New solution

    This issue is fixed in the latest version of the "ios-sim" package (so now this is probably the easier solution - compared to the old one which is listed below). In order to update the "ios-sim" package to the latest version run this in your terminal/cmd:

    cd platforms/ios/cordova/node_modules/
    sudo npm install -g ios-sim@latest
    

    Old solution

    The problem is that the name_id_map[deviceName] returns undefined for "iPad Pro (12.9-inch)" and "iPad Pro (10.5-inch)".

    You can check it with a console.log('name_id_map[ deviceName ]: ' + name_id_map[ deviceName ]);.

    I fixed this bug by adding an if statements which checks if the device is defined in "platforms/ios/cordova/node_modules/ios-sim/src/lib.js:282".

    I replaced this:

    list = [];
            var remove = function(runtime) {
                // remove "iOS" prefix in runtime, remove prefix "com.apple.CoreSimulator.SimDeviceType." in id
                list.push(util.format('%s, %s', name_id_map[ deviceName ].replace(/^com.apple.CoreSimulator.SimDeviceType./, ''), runtime.replace(/^iOS /, '')));
            };
    

    with this:

    list = [];
            var remove = function(runtime) {
                // remove "iOS" prefix in runtime, remove prefix "com.apple.CoreSimulator.SimDeviceType." in id
                if (name_id_map[deviceName] && runtime) {
                    list.push(util.format('%s, %s', name_id_map[deviceName].replace(/^com.apple.CoreSimulator.SimDeviceType./, ''), runtime.replace(/^iOS /, '')));
                }
            };
    

    The "iPad Pro (10.5-inch)" simulator won't be on the list (but it doesn't probably work anyway - didn't check).

    Bug report on github: https://github.com/phonegap/ios-sim/issues/210

提交回复
热议问题