Не удалось перестроить node-gyp при установке "слабого" модуля в Windows 7 для фантомов
Я пытаюсь установить модуль phantomjs-node на Windows 7 (64-битную) машину. Похоже, что при установке "слабого" модуля произошла ошибка перекомпоновки node-gyp.
Я выполнил шаги установки windows-gyp windows и убедился, что у меня установлен python и его путь задан правильно.
У меня также есть Visual C++ и другие требования, необходимые для узла-GIP. К сожалению, я не смог исправить ошибку пересборки node-gyp.
У меня установлено следующее
- узел - 0,8.14(64 бита)
- питон - 2.7.3(64 бит)
- Microsoft Visual C++ 2010 (64-разрядная версия, также на всякий случай установлена 32-разрядная версия, поскольку 64-разрядная версия не помогла)
- Visual Studio 2010 (Pro) и Visual Studio 2012 (экспресс, как для Интернета, так и для настольных компьютеров)
- Windows SDK 7.1
Ошибка, которую я продолжаю получать при установке слабого модуля:
C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ Microsoft.Cpp.InvalidPlatform.Targets (23,7): ошибка MSB8007: недопустимая платформа для проекта 'weakref.vcxproj'. Платформа = "64". Возможно, вы видите это сообщение, потому что вы пытаетесь построить проект без файла решения и указали платформу не по умолчанию, которая не существует для этого проекта.
Я застрял с вышеупомянутой проблемой, перепробовав все ссылки и правильно установив все требования node-gyp. Помощь высоко ценится.
4 ответа
После долгих экспериментов я смог решить проблему.
Я переустановил Windows SDK 7.1, на этот раз я изменил путь по умолчанию, где происходит установка SDK. Ранее SDK по умолчанию устанавливался в
C: \ Program Files \ Microsoft SDKs \ Windows \ v7.1
но после завершения установки, когда я посмотрел в C: \ Program Files \ Microsoft SDK, я не смог найти ни одного windows sdk, потому что вместо этого он был установлен в папку C:\Program Files (x86)\Microsoft SDKs\Windows. Поэтому при переустановке Windows SDK я изменил путь по умолчанию, который указывал на C: \ Program Files \ Microsoft SDK, на C: \ Program Files (x86) \ Microsoft SDK, и это помогло.
Перед переустановкой Windows SDK обязательно удалите все версии Visual C++, которые были установлены.
Слабый модуль был установлен, но с предупреждением, которое не вызвало никаких проблем. Надеюсь это поможет.
Я искал этот ответ в течение нескольких дней, и вышеуказанное исправление не сработало для меня.
Решение, которое я нашел, работавшее как очарование, здесь: не удается установить модули узлов, требующие компиляции в Windows 7 x64/VS2012
npm install phantom -msvs_version=2012
Ни одно из этих решений не работало, или было слишком много неизвестных, поэтому мне нужно было более простое решение. Я использовал метод, предложенный на странице https://github.com/sgentle/phantomjs-node, где написано
dnodeOpts property could help you to control dnode settings, so you could disable weak by setting it false to avoid that complicated installations.
var phantom = require('phantom');
phantom.create(function (ph) {
ph.createPage(function (page) {
/* the page actions */
});
}, {
dnodeOpts: {
weak: false
}
});
Таким образом, предполагая, что вы работаете в Windows (в противном случае у вас вообще не будет этой проблемы), просто установите для dnodeOpts значение false, как показано выше, и затем завершите функцию phantom.create. Например, если вы использовали стартовый код:
phantom.create(function (ph) {
ph.createPage(function (page) {
page.open("http://www.google.com", function (status) {
console.log("opened google? ", status);
page.evaluate(function () { return document.title; }, function (result) {
console.log('Page title is ' + result);
ph.exit();
});
});
});
}, {
dnodeOpts: {
weak: false
}
});
Попробуйте переустановить Windows SDK, и это должно решить проблему.