找不到模块“@babel/preset-react”
Cannot find module '@babel/preset-react'
我试图在 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"
}
}
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
上的值恢复为生产。
我设法部署了它。我的回答基于这里:
我设置的是:
NPM_CONFIG_PRODUCTION= false
YARN_PRODUCTION = false
YARN_CONFIG_PRODUCTION = false
我测试了更改 ENV 值,这对我有用。
这可以在配置变量下的 heroku 设置中设置
我试图在 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"
}
}
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
上的值恢复为生产。
我设法部署了它。我的回答基于这里:
我设置的是:
NPM_CONFIG_PRODUCTION= false
YARN_PRODUCTION = false
YARN_CONFIG_PRODUCTION = false
我测试了更改 ENV 值,这对我有用。
这可以在配置变量下的 heroku 设置中设置