Аргументы в path.resolve должны быть строками при запуске Grunt

Мой файл Grunt:

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),

        ts: {
            dev: {
                src: ["src/background/*.ts"],
                out: ["build/background.js"],
            }
        }
    });

    grunt.loadNpmTasks("grunt-ts");
    grunt.registerTask("default", ["ts:dev"]);
};

(Я использую Grunt-TS.)

Системная информация

  • Windows 8.1
  • NodeJS v0.10.24
  • grunt-cli v0.1.11
  • хрюкать v0.4.2

Я уже искал в Интернете и нашел много ресурсов об этой ошибке, но все они говорят, что нужно обновить NodeJS и / или Grunt. Я уже попробовал это. Я даже полностью переустановил Grunt, однако ошибка осталась.


Полное сообщение об ошибке:

P:\my-folder>grunt ts
Running "ts:dev" (ts) task
Warning: Arguments to path.resolve must be strings Use --force to continue

Aborted due to warnings.

package.json

{
  "name": "regex-search",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "~0.4.2",
    "grunt-contrib-jshint": "~0.6.3",
    "grunt-contrib-nodeunit": "~0.2.0",
    "grunt-contrib-uglify": "~0.2.2",
    "grunt-ts": "~1.5.1"
  }
}

2 ответа

Решение

После сравнения моего Gruntfile с официально предоставленным примером файла я обнаружил свою действительно глупую ошибку:

ts: {
  dev: {
    src: ["src/background/*.ts"],
    out: ["build/background.js"],
  }
}

out не должен быть массивом!
Правильная версия:

ts: {
  dev: {
    src: ["src/background/*.ts"],
    out: "build/background.js",
  }
}

Так что в моем конкретном случае, модуль узла main приписывать package.json был массив, а не строка, например в файле package.json для history.js:

{
     "main": [ './history.js', './history.adapter.ender.js' ]
}

То, как я узнал об этом, шел туда, где возникла ошибка в моих node_modules, а затем сделал console.log(pkg.main) прямо над ним.

Оригинальная трассировка стека:

Fatal error: Arguments to path.resolve must be strings
TypeError: Arguments to path.resolve must be strings
    at Object.posix.resolve (path.js:422:13)
    at /Users/ebower/work/renvy/node_modules/browserify/node_modules/resolve/lib/async.js:153:38
    at fs.js:336:14
    at /Users/ebower/work/renvy/node_modules/grunt-browserify/node_modules/watchify/node_modules/chokidar/node_modules/readdirp/node_modules/graceful-fs/graceful-fs.js:104:5
    at /Users/ebower/work/renvy/node_modules/grunt-mocha/node_modules/mocha/node_modules/glob/node_modules/graceful-fs/graceful-fs.js:104:5
    at FSReqWrap.oncomplete (fs.js:99:15)
Другие вопросы по тегам