Аргументы 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
- grunt 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"
}
}
Ответы
Ответ 1
После сравнения моего файла Grunt с официально предоставленным образцом файла, я нашел свою действительно глупую ошибку:
ts: {
dev: {
src: ["src/background/*.ts"],
out: ["build/background.js"],
}
}
out
не должен быть массивом!
Правильная версия:
ts: {
dev: {
src: ["src/background/*.ts"],
out: "build/background.js",
}
}
Ответ 2
Таким образом, в моем конкретном случае атрибут node module main
в package.json
был массивом, а не строкой, пример в history.js 'package.json:
{
"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)