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
Другие вопросы по тегам