VS 2019 gruntfile. js не найдено задач при использовании 'sass = require (' node-sass ')' - PullRequest
2 голосов
/ 04 февраля 2020

Я впервые пытаюсь настроить grunt-sass в новом. Net Core 3.1 веб-приложении. Я прошел через шаги MSFT, чтобы добавить grunt к проекту, обозначенному здесь here , а затем изменил его с помощью шагов из инструкции grunt-sass here .

This однако заставляет проводника задач заявить, что задачи не найдены. Вот мой пакет. 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

На данный момент у меня нет идей, но я новичок, так что Я уверен, что упускаю что-то очевидное.

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Для всех, кто посетил это с существующим проектом, у меня возникла проблема с уже существующим файлом node-sass / grunt на новом компьютере, и я обнаружил, что в моем пакете повышается версия node-sass. json заставил VS переустановить пакеты и обновить привязки, как отмечено в другом ответе.

У меня есть небольшое подозрение, что есть разница в версиях между выполнением grunt в моей командной строке и тем, что использует VS, так как мой grunt файл работал нормально, если я запускал его вручную, но не отображался в Task Runner Explorer.

0 голосов
/ 04 февраля 2020

Я обнаружил следующую ошибку, которая привела меня к перестройке:

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.
...