VS 2019 gruntfile.js при использовании 'sass = require('node-sass')' задачи не найдены
Я впервые пытаюсь настроить grunt-sass в новом веб-приложении.Net Core 3.1. Я прошел через шаги MSFT, чтобы добавить grunt в проект, описанный здесь, а затем изменил его с помощью шагов из инструкций grunt-sass здесь.
Однако это приводит к тому, что проводник запуска задач сообщает, что задачи не найдены. Вот мой package.json:
{
"name": "chapelstudios_www",
"version": "0.0.2",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://me@bitbucket.org/me/chapelstudios_www.git"
},
"author": "mr",
"license": "ISC",
"homepage": "https://bitbucket.org/me/chapelstudios_www#readme",
"private": true,
"devDependencies": {
"grunt": "^1.0.4",
"grunt-cli": "^1.3.2",
"grunt-sass": "^3.1.0",
"node-sass": "^4.13.1"
},
"dependencies": {
"gulp": "^4.0.2"
}
}
А это мой gruntfile.js:
const sass = require('node-sass');
require('load-grunt-tasks')(grunt);
module.exports = function (grunt) {
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
// Sass
sass: {
options: {
implementation: sass,
sourceMap: true, // Create source map
outputStyle: 'compressed' // Minify output
},
dist: {
files: [
{
expand: true, // Recursive
cwd: "Styles", // The startup directory
src: ["**/*.scss"], // Source files
dest: "wwwroot/css", // Destination
ext: ".css" // File extension
}
]
}
}
});
// Load the plugin
grunt.loadNpmTasks('grunt-sass');
// Default task(s).
grunt.registerTask('default', ['sass']);
};
Я не уверен, как получить более подробную информацию об ошибке, но я отследил проблему до
const sass = require('node-sass');
строка, которая требуется инструкциями grunt-sass. Если я изменю его на строку "sass", рекомендованную более ранними руководствами, задача отображается, но не выполняется, когда я пытаюсь ее запустить.
Я также выполнил следующие установки из окна PowerShell с повышенными привилегиями в каталоге проекта, пытаясь убедиться, что они были установлены в проект локально, поскольку я слышал, что это основная проблема:
npm install
npm install grunt
npm install grunt-cli
npm install --save-dev node-sass grunt-sass
На данный момент у меня нет идей, но я новичок, поэтому уверен, что упускаю что-то очевидное.
4 ответа
Возрождаю старую тему, но вот что сработало для меня. YMMV.
- В Visual Studio перейдите к: Инструменты -> Параметры -> Управление веб-пакетами -> Внешние веб-инструменты.
- Переместите $(PATH) выше $(VSInstalledExternalTools).
Я понятия не имею, есть ли какие-либо побочные эффекты от этого.
кредит: https://developercommunity.visualstudio.com/solutions/314606/view.html
Для всех, кто посещал это с существующим проектом, у меня была эта проблема с уже существующим файлом node-sass / grunt на новом компьютере, и я обнаружил, что увеличение версии node-sass в моем package.json вызвало VS чтобы переустановить пакеты и обновить привязки, как указано в другом ответе.
У меня есть небольшое подозрение, что есть разница в версиях между запуском grunt в моей командной строке и тем, что использует VS, поскольку мой файл grunt работал нормально, если я запускал его вручную, но не отображался в Task Runner Explorer.
Я обнаружил следующую ошибку, которая заставила меня выполнить перестройку:
Error: Missing binding A:\Projects\Repos\chapelstudios_www\node_modules\node-sass\vendor\win32-x64-79\binding.node
Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 13.x
Found bindings for the following environments:
- Windows 64-bit with Node.js 10.x
This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to download the binding for your current environment.
Как сказал Джейк, я также отследил ошибку до этой строки:
const sass = require('node-sass');
Running rebuild didn't work. I found that after upgrading node from version 10.x to current version (12.18 Windows) and then rebuilding fixed the issue.
npm rebuild node-sass