【问题标题】:Cannot find module '@babel/preset-react'找不到模块'@babel/preset-react'
【发布时间】:2021-11-04 07:45:38
【问题描述】:

我试图在 heroku 上部署我的 reactjs rails 应用程序。

在我收到此错误之前一切似乎都很好:

Module build failed (from ./node_modules/babel-loader/lib/index.js):
remote:        Error: Cannot find module '@babel/preset-react'

该应用程序在我的本地主机中运行良好。我尝试删除我的 node_modules 文件夹,然后运行 ​​npm install 但错误仍然存​​在(仅在部署 heroku 时)。

我的 package.json:

{
  "name": "App",
  "private": true,
  "dependencies": {
    "@rails/webpacker": "5.4.0",
    "@types/react": "^17.0.18",
    "@types/react-dom": "^17.0.9",
    "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
    "prop-types": "^15.7.2",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react_ujs": "^2.6.1",
    "webpack": "^4.46.0",
    "webpack-cli": "^3.3.12"
  },
  "devDependencies": {
    "@babel/plugin-syntax-jsx": "^7.14.5",
    "@babel/plugin-transform-react-jsx": "^7.14.9",
    "@babel/preset-env": "^7.15.0",
    "@babel/preset-react": "^7.14.5",
    "webpack-dev-server": "^3.11.2"
  }
}

【问题讨论】:

    标签: reactjs ruby-on-rails heroku


    【解决方案1】:

    我设法部署了它。我的答案基于这里:Why is devDependencies' pruning skipped even if NPM_CONFIG_PRODUCTION is true?

    我所做的是设置:

    NPM_CONFIG_PRODUCTION= false 
    YARN_PRODUCTION = false
    YARN_CONFIG_PRODUCTION = false
    

    我测试了不断变化的 ENV 值,这对我有用。

    这可以在 config vars 下的 heroku 设置中设置

    【讨论】:

      【解决方案2】:

      Heroku 默认为 NODE_END=production。这对您的构建有何影响?

      您在devDependencies 中有@babel/preset-react。当您使用npm i(或yarn)安装带有NODE_ENV=production 的软件包时,npm(或yarn)仅安装dependencies(它不会安装devDependencies)。

      要解决这个问题,您可以 -

      • 要么覆盖NODE_ENV。 ($ NODE_ENV=development npm i)
      • 在构建之前运行npm i --only=dev

      为了安全起见,当您在生产环境(在您的情况下是 Heroku)中运行时,将 NODE_ENV 上的值恢复为生产环境。

      【讨论】:

        猜你喜欢
        • 2019-07-30
        • 1970-01-01
        • 2021-03-03
        • 2019-03-24
        • 1970-01-01
        • 2021-11-26
        • 2021-07-23
        • 2023-01-05
        • 1970-01-01
        相关资源
        最近更新 更多