Mee*_*gul 7 visual-studio node.js npm reactjs npm-scripts
运行 Windows 10(内部版本 18362),使用 Node.js v10.16.0、npm v6.9.0 和 .Net Core v2.2.300。我通过 File->New Project 在 Visual Studio 2017 中创建了一个示例 React/Redux 应用程序,选择 ASP.NET Core Web 应用程序,然后选择 React.js 和 Redux。但是,当通过 Visual Studio 启动应用程序时,浏览器遇到 500 错误并说:
An unhandled exception occurred while processing the request.
AggregateException: One or more errors occurred. (One or more errors occurred. (The NPM script 'start' exited without indicating that the create-react-app server was listening for requests. The error output was: 'rimraf' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! WebApplication1@0.1.0 start: `rimraf ./build && react-scripts start`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the WebApplication1@0.1.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Run Code Online (Sandbox Code Playgroud)
首先,我卸载并重新安装了 node 和 npm,删除了 node_modules 并重新运行npm install
。我在重新安装节点之前和之后重新启动。
我知道 rimraf 安装在本地.\node_modules
目录中,因为我可以成功运行.\node_modules\.bin\rimraf
. 和react-scripts start
启动应用程序的反应部分成功,如果我跑.\node_modules\.bin\react-scripts start
,但为什么会NPM不能找到呢?
据我了解,npmnode_modules\.bin
在脚本执行时将本地添加到 PATH 中,但它仍然无法同时找到rimraf
和react-scripts
尽管如果提供 shell 的绝对路径,它们仍然可以访问。
我还尝试添加.\node_modules\.bin
到我的系统 PATH,它允许我(假设我在我的应用程序目录的根目录中)只是运行react-scripts start
并加载应用程序,但npm run start
仍然失败。
这是我的 package.json:
{
"name": "WebApplication1",
"version": "0.1.0",
"private": true,
"dependencies": {
"bootstrap": "^4.3.1",
"jquery": "3.3.1",
"react": "^16.0.0",
"react-dom": "^16.0.0",
"react-redux": "^5.0.6",
"react-router-bootstrap": "^0.24.4",
"react-router-dom": "^4.2.2",
"react-router-redux": "^5.0.0-alpha.8",
"react-scripts": "^1.1.5",
"reactstrap": "^6.3.0",
"redux": "^3.7.2",
"redux-thunk": "^2.2.0",
"rimraf": "^2.6.2"
},
"devDependencies": {
"ajv": "^6.0.0",
"babel-eslint": "^7.2.3",
"cross-env": "^5.2.0",
"eslint": "^4.1.1",
"eslint-config-react-app": "^2.1.0",
"eslint-plugin-flowtype": "^2.50.3",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-react": "^7.11.1"
},
"eslintConfig": {
"extends": "react-app"
},
"scripts": {
"start": "rimraf ./build && react-scripts start",
"build": "react-scripts build",
"test": "cross-env CI=true react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"lint": "eslint ./src/"
}
}
Run Code Online (Sandbox Code Playgroud)
这可能是路径问题。就我而言,我在 TopShelf 服务内托管 WebHost,而不是普通的 .Net core Web 项目。我注意到它执行的路径与通过项目模板生成的路径不同:dotnet new react -o my-new-app
。
在项目模板版本中,它rimraf
从 ClientApp 文件夹运行,而在我的应用程序中,它从该文件夹运行bin\Debug\netcoreapp3.0
。更改我的ClientApp\package.json
引用正确的路径可以解决问题,但我希望有更好的解决方案:
"scripts": {
"start": "cd ../../../../ClientApp && cd && .\\node_modules\\.bin\\rimraf ./build && .\\node_modules\\.bin\\react-scripts start",
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5759 次 |
最近记录: |