Node.js 找不到本地grunt文件
我有一个使用azure devops构建的nodejs应用程序。 当我运行该项目时,我发现了以下错误 [调试]-环境=测试 [命令]C:\Users\ci cd admin\AppData\Roaming\npm\grunt.cmd test\u build-gruntfile C:\Users\ci cd admin\agent\\u work\6\s\gruntfile.js-environment=test grunt cli:grunt命令行界面v1.3.2 致命错误:找不到本地grunt。 如果您看到此消息,则grunt尚未在本地安装到 你的项目。有关安装和配置grunt的更多信息, 请参阅入门指南: https://gruntjs.com/getting-started [调试]rc:99 [调试]成功:false 如您所见,安装了grunt cli,我将在下面附加我的package.json文件Node.js 找不到本地grunt文件,node.js,gruntjs,Node.js,Gruntjs,我有一个使用azure devops构建的nodejs应用程序。 当我运行该项目时,我发现了以下错误 [调试]-环境=测试 [命令]C:\Users\ci cd admin\AppData\Roaming\npm\grunt.cmd test\u build-gruntfile C:\Users\ci cd admin\agent\\u work\6\s\gruntfile.js-environment=test grunt cli:grunt命令行界面v1.3.2 致命错误:找不到本地grun
{
"name": "vvvvvv",
"version": "vv.vv.2",
"description": "vvvv vvvvv vvvv",
"homepage": "https://vvvv.vvvv.co",
"repository": {
"type": "git",
"url": "https://vvvv.vvvvv.com/_git/RMS"
},
"license": "SEE LICENSE IN LICENCE.md",
"scripts": {
"client": "cd client && yarn start",
"server": "nodemon ./server/server.js",
"dev": "concurrently --kill-others-on-fail \"yarn docs:build\" \"yarn server\" \"yarn client\"",
"debug": "concurrently --kill-others-on-fail \"nodemon --inspect=127.0.0.1:9229 server/server.js\" \"yarn client\"",
"start": "sequelize db:migrate && sequelize db:seed:all && pm2 start server/server.js",
"stop": "pm2 stop server/server.js",
"docs:build": "documentation build server/** -f html -o client/public/server-doc && documentation build client/src/** -f html -o client/public/client-doc",
"test": "mocha test --reporter mocha-junit-reporter --reporter-options mochaFile=./test-results.xml --exit",
"report": "junit-viewer --results=test-results.xml --save=client/public/test-result.html",
"migrate-dev": "sequelize db:migrate && sequelize db:seed:all --seeders-path server/seeders/common && sequelize db:seed:all --seeders-path server/seeders/test",
"migrate-prod": "sequelize db:migrate && sequelize db:seed:all --seeders-path server/seeders/common && sequelize db:seed:all --seeders-path server/seeders/production",
"sonar": "node sonar-project.js"
},
"dependencies": {
"assert-plus": "*",
"body-parser": "1.18.3",
"bunyan": "1.8.12",
"client-credentials": "1.1.0",
"concurrently": "4.1.0",
"connect-mongo": "1.3.2",
"cookie-parser": "1.4.3",
"cors": "2.8.5",
"ejs": ">= 0.0.0",
"ejs-locals": ">= 0.0.0",
"express": "4.16.4",
"express-fileupload": "1.1.5",
"express-handlebars": "3.0.2",
"express-session": "1.14.1",
"firebase-admin": "8.2.0",
"graph-service": "2.1.3",
"handlebars": "4.1.2",
"helmet-csp": "^2.9.3",
"json-rules-engine": "2.3.3",
"jsonwebtoken": "8.5.1",
"lodash": "4.17.11",
"method-override": "2.3.6",
"moment": "2.24.0",
"mongoose": "4.6.2",
"morgan": "1.9.1",
"nodejs-nodemailer-outlook": "1.1.0",
"nodemailer": "6.1.0",
"passport": "0.4.0",
"passport-azure-ad": "4.1.0",
"passport-jwt": "4.0.0",
"pg": "7.8.1",
"pg-hstore": "2.3.2",
"sequelize": "4.43.0",
"swagger-jsdoc": "1.10.3",
"x-xss-protection": "^1.3.0"
},
"devDependencies": {
"@babel/core": "7.4.4",
"@babel/node": "7.2.2",
"@babel/preset-env": "7.4.4",
"babel-cli": "6.26.0",
"babel-core": "6.26.3",
"babel-eslint": "9.0.0",
"babel-polyfill": "6.26.0",
"babel-preset-es2015": "6.24.1",
"babel-preset-stage-2": "6.24.1",
"babel-register": "6.26.0",
"chai": "4.2.0",
"eslint": "5.6.0",
"eslint-config-airbnb": "17.1.0",
"eslint-config-prettier": "4.1.0",
"eslint-config-react-app": "3.0.7",
"eslint-plugin-flowtype": "2.50.3",
"eslint-plugin-import": "2.16.0",
"eslint-plugin-jsx-a11y": "6.2.1",
"eslint-plugin-prettier": "3.0.1",
"eslint-plugin-react": "7.12.4",
"grunt": "1.0.3",
"grunt-clean": "0.4.0",
"grunt-contrib-copy": "1.0.0",
"grunt-contrib-jshint": "2.0.0",
"grunt-env": "0.4.4",
"grunt-shell": "3.0.1",
"grunt-zip": "0.18.1",
"load-grunt-tasks": "4.0.0",
"mocha": "6.1.4",
"mocha-junit-reporter": "1.23.1",
"prettier": "1.16.4",
"sequelize-cli": "5.4.0",
"sinon": "7.4.1",
"sonarqube-scanner": "2.5.0",
"supertest": "4.0.2"
}
}
下面是我的Grunfile.js
/* eslint-disable global-require */
/* eslint-disable func-names */
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
env: {
options: {},
dev: {
REACT_APP_ENV: grunt.option('environment') || 'production'
}
},
shell: {
build_server: {
command: 'npm install'
},
build_client: {
command: 'cd client && npm install && npm run build'
}
},
clean: {
folder: 'dist'
},
copy: {
build: {
files: [
{ src: 'server/**', dest: 'dist/' },
{ src: 'package.json', dest: 'dist/' },
{ src: '.sequelizerc', dest: 'dist/' },
{ src: 'client/build/**', dest: 'dist/' },
{ src: 'test/**', dest: 'dist/' },
]
}
}
});
grunt.loadNpmTasks('grunt-clean');
grunt.loadNpmTasks('grunt-env');
grunt.registerTask('prod_build', [
'env',
'shell:build_server',
'shell:build_client',
'clean',
'copy:build'
]);
grunt.registerTask('test_build', [
'env',
'shell:build_server',
'shell:build_client',
'clean',
'copy:build'
]);
grunt.registerTask('uat_build', [
'env',
'shell:build_server',
'shell:build_client',
'clean',
'copy:build'
]);
grunt.registerTask('regression_build', [
'env',
'shell:build_server',
'shell:build_client',
'clean',
'copy:build'
]);
grunt.registerTask('default', ['shell:build_server', 'shell:build_client']);
};
有什么想法吗 看起来可能是Grunt尚未在本地安装,或者您可能在项目文件夹之外。您可以尝试从项目文件夹中执行以下命令,将其安装到依赖项中 “npm安装bower-保存开发”