Я нахожусь в процессе разработки аддона Node c ++. Как только я запускаю программу, точки останова становятся серыми, и я получаю сообщение об ошибке в VS CODE: «Точка останова игнорируется, потому что сгенерированный код не найден».
«$ {workspaceFolder} / build / Debug /» содержит :
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 05.02.2020 14:28 obj
-a---- 05.02.2020 15:07 824 hello.exp
-a---- 05.02.2020 15:07 8738912 hello.ilk
-a---- 05.02.2020 15:07 1686 hello.lib
-a---- 05.02.2020 15:07 3566179 hello.map
-a---- 05.02.2020 15:07 1875456 hello.node
-a---- 05.02.2020 15:07 8835072 hello.pdb
В "$ {workspaceFolder}" также есть "hello. cc", который компилируется и запускается без ошибок: [] [1] `
// hello.cc
#include <sstream>
#include <napi.h>
class DataprocessingAsyncWorker : public Napi::AsyncWorker {
public:
static Napi::Value Create(const Napi::CallbackInfo& info) {
if (info.Length() != 1) {
return Reject(info.Env(), "MissingArgument");
} else if (!info[0].IsString()) {
return Reject(info.Env(), "InvalidArgument");
}
std::string input = info[0].As<Napi::String>().Utf8Value();
DataprocessingAsyncWorker* worker = new DataprocessingAsyncWorker(info.Env(), input);
worker->Queue();
return worker->deferredPromise.Promise();
}
protected:
static Napi::Value Reject(Napi::Env env, const char* msg) {
Napi::Promise::Deferred failed = Napi::Promise::Deferred::New(env);
failed.Reject(Napi::Error::New(env, msg).Value());
return failed.Promise();
}
void Execute() {
if(input.size() < 1) {
SetError("EmptyName");
return;
}
std::stringstream str;
str << "hello, " << input;
result = str.str();
}
virtual void OnOK() {
deferredPromise.Resolve(Napi::String::New(Env(), result));
}
virtual void OnError(const Napi::Error& e) {
deferredPromise.Reject(e.Value());
}
private:
DataprocessingAsyncWorker(napi_env env, std::string& name) : Napi::AsyncWorker(env), input(name), result(), deferredPromise(Napi::Promise::Deferred::New(env)) { }
std::string input;
std::string result;
Napi::Promise::Deferred deferredPromise;
};
Napi::Object Init(Napi::Env env, Napi::Object exports) {
return Napi::Function::New(env, DataprocessingAsyncWorker::Create);
}
NODE_API_MODULE(addon, Init)
static Napi::Value Reject(Napi::Env env, const char *msg)
{
Napi::Promise::Deferred failed = Napi::Promise::Deferred::New(env);
failed.Reject(Napi::Error::New(env, msg).Value());
return failed.Promise();
}`
Поэтому я не могу понять это сообщение об ошибке.
Запуск файла. json: [] [2]
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Anfügen",
"type": "cppdbg",
"request": "attach",
"program": "${workspaceFolder}/build/Debug/hello.node",
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"miDebuggerPath": "D:/Downloads/x86_64-w64-mingw32-gdb-7.1.90.20100730/mingw64/bin/gdb.exe",
"preLaunchTask": "npm: build:dev",
"setupCommands": [
{
"description": "Automatische Strukturierung und Einrückung für \"gdb\" aktivieren",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}\\server\\server.js"
}
]
}
package. json: [] [3]
{
"name": "loopback-example-user-management",
"version": "1.0.0",
"description": "LoopBack user management example",
"main": "server/server.js",
"engines": {
"node": ">=6"
},
"scripts": {
"build:dev": "node-gyp -j 16 build --debug",
"build": "node-gyp -j 16 build",
"rebuild:dev": "node-gyp -j 16 rebuild --debug",
"rebuild": "node-gyp -j 16 rebuild",
"clean": "node-gyp clean"
},
"dependencies": {
"bindings": "^1.5.0",
"body-parser": "^1.10.0",
"compression": "^1.0.3",
"cors": "^2.8.1",
"express": "^4.17.1",
"loopback": "^3.0.0",
"loopback-boot": "^2.4.0",
"loopback-component-explorer": "^6.3.1",
"loopback-connector-mongodb": "^4.2.0",
"mongodb": "^3.1.13",
"monk": "^7.1.2",
"morgan": "^1.9.1",
"node-addon-api": "^2.0.0",
"serve-favicon": "^2.0.1",
"strong-error-handler": "^3.2.0"
},
"devDependencies": {
"jshint": "^2.5.6",
"tape": "^4.2.0"
},
"repository": {
"type": "git",
"url": "git+https://github.com/strongloop/loopback-example-user-management.git"
},
"license": "MIT",
"author": "IBM Corp."
}
Существует также задача . json (Я был вдохновлен [Отладка NodeJS C ++ дополнений с использованием кода VS] [ 4]): [] [5]
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "build:dev",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
VS Код системной информации: [] [6]
VS Code system info:
Version: 1.41.1 (user setup)
Commit: 26076a4de974ead31f97692a0d32f90d735645c0
Date: 2019-12-18T14:58:56.166Z
Electron: 6.1.5
Chrome: 76.0.3809.146
Node.js: 12.4.0
V8: 7.6.303.31-electron.0
OS: Windows_NT x64 10.0.17763
Заранее спасибо, хотя этот вопрос задавался много раз .