Я написал некоторую функцию в C ++ для анализа файла csv
( Используя этот синтаксический анализатор: https://github.com/AriaFallah/csv-parser) и сделал с ним некоторые вещи. Теперь я хотел использовать (почти) тот же код для NodeJS на основеКомпиляция и запуск это прекрасно работает (я использую CMakeLists
для компиляции), но при попытке скомпилировать его через node-gyp
(+ некоторые изменения, основанные на nan
) библиотеку только для заголовков, которую я использую для csv
Синтаксический анализ немедленно инициализируется и вызывает исключение из-за недопустимых потоков ввода.
#include <nan.h>
#include <iostream>
#include <stdexcept>
#include <string>
#include <cstring>
#include "csv-parser.hpp"
#include "SampleData.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
using namespace Nan;
using namespace v8;
using namespace aria::csv;
NAN_METHOD(ParseData) {
std::ifstream some_stream("<path1">);
[... lots of stuff]
}
NAN_MODULE_INIT(Initialize) {
NAN_EXPORT(target, ParseData);
}
NODE_MODULE(addon, Initialize);
При сбое компиляции это происходит из-за этого:
make: Entering directory '/home/me/WebstormProjects/nodenative/build'
g++ '-DNODE_GYP_MODULE_NAME=addon' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/home/me/.node-gyp/8.11.4/include/node -I/home/me/.node-gyp/8.11.4/src -I/home/me/.node-gyp/8.11.4/deps/openssl/config -I/home/me/.node-gyp/8.11.4/deps/openssl/openssl/include -I/home/me/.node-gyp/8.11.4/deps/uv/include -I/home/me/.node-gyp/8.11.4/deps/zlib -I/home/me/.node-gyp/8.11.4/deps/v8/include -I../node_modules/nan -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/addon/main.o.d.raw -c -o Release/obj.target/addon/main.o ../main.cpp
In file included from ../main.cpp:6:0:
../csv-parser.hpp: In constructor ‘aria::csv::CsvParser::CsvParser(std::istream&)’:
../csv-parser.hpp:81:84: error: exception handling disabled, use -fexceptions to enable
throw std::runtime_error("Something is wrong with input stream");
^
Это происходит, как только включается csv-parser.hpp
, даже когда не используется.
Спасибо за любые идеи!