Реакция синтаксической ошибки при компиляции компонента из node_modules - PullRequest
0 голосов
/ 03 марта 2019

У меня ниже структура и хорошая компиляция.

  • Проект
    • Зоопарк
      • Src
      • Компоненты
        • MySharedComponents

Когда я пытаюсь переместить мои общие компоненты как один проекти попробуйте установить его в другом проекте, как показано ниже.Это приводит к синтаксической ошибке компиляции.

  • Функция (Мой общий компонентный проект)
    • Src
      • Компоненты
        • MySharedComponents
  • Проект
    • node_modules
      • Функция
    • Зоопарк
      • Src
      • Компоненты

GIT Repo: https://github.com/andiappan-ar/babelIssue.git

enter image description here

Я установил свой общий проект с помощью следующей команды

> npm install --save ../../feature

Мой проект Zoo server.webpack.config.js ниже

const path = require('path');
const env = require('@babel/preset-env');
const reactApp = require('babel-preset-react-app');
// Webpack build configuration to build the SSR bundle.
// Invoked by build:server.

module.exports = {
  mode: 'production',
  entry: path.resolve(__dirname, './server.js'),
  target: 'node',
  output: {
    path: path.resolve(__dirname, '../build'),
    filename: '../build/server.bundle.js',
    libraryTarget: 'this',
  },
  optimization: {
    minimize: false,
  },
  module: {
    rules: [
      {
        test: /\.m?jsx?$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            babelrc: false,
            presets: [env, reactApp],
          },
        },
      },
      {
        test: /\.html$/,
        exclude: /node_modules/,
        use: { loader: 'html-loader' },
      },
      {
        // anything not JS or HTML, we load as a URL
        // this makes static image imports work with SSR
        test: /\.(?!js|mjs|jsx|html|graphql$)[^.]+$/,
        exclude: /node_modules/,
        use: {
          loader: 'url-loader',
        },
      },
      {
        // anything in node_modules that isn't js,
        // we load as null - e.g. imported css from a module,
        // that is not needed for SSR
        test: /\.(?!js|mjs|jsx|html|graphql$)[^.]+$/,
        include: /node_modules/,
        use: {
          loader: 'null-loader',
        },
      },
    ],
  },
};

Мой проект Zoo package.json ниже

{
  "name": "jss-sample-react",
  "description": "Application utilizing Sitecore JavaScript Services and React (create-react-app).",
  "version": "11.0.2",
  "private": true,
  "config": {
    "appName": "SafariZoo",
    "rootPlaceholders": [
      "jss-main"
    ],
    "sitecoreDistPath": "/dist/SafariZoo",
    "sitecoreConfigPath": "/App_Config/Include/zzz",
    "graphQLEndpointPath": "/api/SafariZoo",
    "language": "en"
  },
  "engines": {
    "node": ">=8.1",
    "npm": ">=5.6.0",
    "yarn": "yarn is not supported, please use npm"
  },
  "author": {
    "name": "Sitecore Corporation",
    "url": "https://jss.sitecore.net"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/sitecore/jss.git"
  },
  "bugs": {
    "url": "https://github.com/sitecore/jss/issues"
  },
  "license": "Apache-2.0",
  "dependencies": {
    "@sitecore-jss/sitecore-jss-react": "^11.0.2",
    "@sitecore-jss/sitecore-jss-tracking": "^11.0.2",
    "@types/bootstrap": "^4.2.2",
    "@types/jquery": "^3.3.29",
    "feature": "../../feature",
    "apollo-cache-inmemory": "~1.3.12",
    "apollo-client": "~2.4.8",
    "apollo-link": "~1.2.6",
    "apollo-link-batch-http": "~1.2.6",
    "apollo-link-http": "~1.5.9",
    "apollo-link-persisted-queries": "~0.2.2",
    "axios": "~0.18.0",
    "babel-plugin-transform-class-properties": "^6.24.1",
    "bootstrap": "^4.3.1",
    "graphql": "~14.0.2",
    "graphql-tag": "~2.10.0",
    "i18next": "~13.1.2",
    "i18next-fetch-backend": "~2.0.0",
    "isomorphic-fetch": "~2.2.1",
    "jquery": "^3.3.1",
    "react": "~16.7.0",
    "react-apollo": "~2.3.3",
    "react-dom": "~16.7.0",
    "react-helmet": "~5.2.0",
    "react-i18next": "~9.0.2",
    "react-router-dom": "~4.3.1",
    "react-scripts": "2.1.3",
    "serialize-javascript": "~1.6.1"
  },
  "devDependencies": {
    "@babel/register": "~7.0.0",
    "@sitecore-jss/sitecore-jss-cli": "^11.0.2",
    "@sitecore-jss/sitecore-jss-dev-tools": "^11.0.2",
    "@sitecore-jss/sitecore-jss-manifest": "^11.0.2",
    "babel-loader": "8.0.4",
    "babel-preset-react-app": "~7.0.0",
    "chalk": "~2.4.2",
    "chokidar": "~2.0.4",
    "cross-env": "~5.2.0",
    "graphql.macro": "~1.0.2",
    "html-loader": "~0.5.5",
    "http-proxy-middleware": "~0.19.1",
    "npm-run-all": "~4.1.5",
    "null-loader": "~0.1.1",
    "url-loader": "~1.1.2",
    "webpack": "4.19.1",
    "webpack-cli": "~3.2.1"
  },
  "scripts": {
    "jss": "jss",
    "start": "npm-run-all --serial bootstrap:disconnected --parallel start:react start:proxy start:watch-components",
    "start:connected": "scjss-verify-setup && npm-run-all --serial bootstrap:connected start:react start:watch-components",
    "build": "npm-run-all --serial bootstrap:connected build:client build:server",
    "scaffold": "node scripts/scaffold-component.js",
    "start:react": "react-scripts start",
    "start:proxy": "node scripts/disconnected-mode-proxy.js",
    "start:watch-components": "node scripts/generate-component-factory.js --watch",
    "build:client": "cross-env-shell PUBLIC_URL=$npm_package_config_sitecoreDistPath \"react-scripts build\"",
    "build:server": "cross-env-shell NODE_ENV=production \"webpack --config server/server.webpack.config.js\"",
    "bootstrap:connected": "node scripts/bootstrap.js",
    "bootstrap:disconnected": "node scripts/bootstrap.js --disconnected",
    "graphql:update": "node -r babel-register ./scripts/update-graphql-fragment-data.js",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

Я пробовал ниже варианты, но ничего не работает,

  1. вместовручную установите мой общий проект, я использовал lerna, что также вызывает ту же проблему.

  2. В настоящее время в моем проекте нет файла ".babelrc" со всеми моими babel-пресетами в самом webpackconfig.Даже если я добавлю файл babelrc в оба проекта, это не решит проблему.

  3. У меня есть перекрестные ссылки на многие git-ссылки, которые, как они говорят, добавляют пресеты несколькими способами.но ничего не получается.Похоже, проблема все еще открыта https://github.com/facebook/create-react-app/issues/5100.

Как решить эту проблему? или как я могу поделиться своим компонентом в нескольких проектах без этой проблемы с babel?

...