Реагировать на проблему с собственным Metro Bundler с неверной левой стороной AssingmentExpression - PullRequest
0 голосов
/ 13 сентября 2018

Я просто пытаюсь запустить metro bundler для обслуживания приложения. Вот ошибка:

TypeError: Property left of AssignmentExpression expected node to be of a type ["LVal"] but instead got "StringLiteral"
at Object.validate (/Users/tyler/Code/.../node_modules/@babel/types/lib/definitions/utils.js:128:13)
at Object.validate (/Users/tyler/Code/.../node_modules/@babel/types/lib/validators/validate.js:17:9)
at NodePath._replaceWith (/Users/tyler/Code/.../node_modules/@babel/traverse/lib/path/replacement.js:194:9)
at NodePath.replaceWith (/Users/tyler/Code/.../node_modules/@babel/traverse/lib/path/replacement.js:178:8)
at PluginPass.MemberExpression (/Users/tyler/Code/.../node_modules/babel-plugin-transform-inline-environment-variables/lib/index.js:19:18)
at newFn (/Users/tyler/Code/.../node_modules/@babel/traverse/lib/visitors.js:193:21)
at NodePath._call (/Users/tyler/Code/.../node_modules/@babel/traverse/lib/path/context.js:53:20)
at NodePath.call (/Users/tyler/Code/.../node_modules/@babel/traverse/lib/path/context.js:40:17)
at NodePath.visit (/Users/tyler/Code/.../node_modules/@babel/traverse/lib/path/context.js:88:12)
at TraversalContext.visitQueue (/Users/tyler/Code/.../node_modules/@babel/traverse/lib/context.js:118:16)

, что означает, что что-то вроде Platform.OS = "ios" преобразуется в "ios" = "ios": , например, так: <- Этот PR также обращается к TypeError, генерируемому для process.env, что, как мне кажется, имеет место. Моя трассировка стека ссылается на <code>...babel-plugin-transform-inline-environment-variables/lib/index.js:19:18, которая имеет дело исключительно с настройкой process.env. В моем коде есть только два места, использующих переменную из process.env, и ни одно из них не используется в левой части назначения.

PR 45 для метрополитена был объединен еще в 2017 году. И я использую последнюю версию, кстати, это происходит при попытке запустить упаковщик с помощью скрипта "NODE_ENV=development npm start -- --reset-cache". Обратите внимание, что я использую флаг сброса кэша, как указано здесь

Сотрудник предположил, что ошибка может быть вызвана плагином реагирующей системы, но я еще не обнаружил его, если это так. Мы только что перенесли это приложение в Babel 7, к вашему сведению. Сейчас я бьюсь об стену с идеями, и Google-след становится устаревшим. Что еще может быть причиной этой ошибки?

Вот зависимости из моего package.json на случай, если это поможет:

}
 ...
 "dependencies": {
   "@babel/runtime": "^7.0.0",
   "lodash.capitalize": "^4.2.1",
   "lodash.debounce": "^4.0.8",
   "lodash.find": "^4.6.0",
   "phoenix": "^1.3.4",
   "prettier": "^1.14.2",
   "prop-types": "^15.6.2",
   "react": "^16.4.2",
   "react-native": "0.57.0",
   "react-native-firebase": "^4.3.8",
   "react-native-keep-awake": "^3.1.0",
   "react-native-linear-gradient": "^2.4.2",
   "react-native-router-flux": "^4.0.1",
   "react-native-swiper": "^1.5.13",
   "react-native-tts": "^2.0.0",
   "react-redux": "^5.0.7",
   "redux": "^4.0.0",
   "redux-thunk": "^2.3.0",
   "spokestack-react-native": "0.0.2"
 },
 "devDependencies": {
   "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
   "@babel/plugin-transform-runtime": "^7.0.0",
   "babel-core": "^7.0.0-bridge.0",
   "babel-plugin-transform-inline-environment-variables": "^0.4.3",
   "imagemin": "^6.0.0",
   "imagemin-jpegtran": "^5.0.2",
   "imagemin-optipng": "^5.2.1",
   "imagemin-svgo": "^7.0.0",
   "jest": "^23.6.0",
   "metro-react-native-babel-preset": "^0.45.2",
   "pre-commit": "^1.2.2",
   "precise-commits": "^1.0.2",
   "react-test-renderer": "^16.4.2",
   "redux-mock-store": "^1.5.3"
  },
  ...
}

... и, кроме того, babel.config.js согласно Babel 7

module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  plugins: [
    '@babel/plugin-transform-runtime',
    '@babel/plugin-proposal-object-rest-spread',
    'transform-inline-environment-variables'
  ]
}

ОБНОВЛЕНИЕ: я использовал grep в пакетах реагировать *, чтобы найти дополнительные строки, где process.env использовался как левое назначение. Только нашел несколько, но не смог решить проблему.

1 Ответ

0 голосов
/ 16 мая 2019

Ошибка, которую вы видите в журнале, связана с babel-plugin-transform-inline-environment-variables.Если вы исключите его из файла конфигурации, сборка должна пройти.

Я столкнулся с той же проблемой и пока не нашел хорошего решения, поэтому попробуйте обойти способ передачи переменных среды..

...