Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 6

5
votes
answers
4 views
+10

错误:请求浏览器客户端域不安全:dialogflow.googleapis.com

我正在设置 DialogFlow包装,我正在使用 DialogFlow JavaScript SDK 但是,我收到以下错误:

错误:请求浏览器客户端域不安全:dialogflow.googleapis.com

这之前有效,但我不确定它为什么突然停止工作。

我已经尝试将所有代码恢复到有效的版本。我确定这是一个DialogFlow错误。

  const intentDetectResponse = await sessionClient.detectIntent(request)  

完整的错误日志如下:

  {错误:请求浏览器客户端域不安全:在Http2CallStream上的dialogflow.googleapis.com。call.on(/Users/NewProject/node_modules/@grpc/grpc-js/build/src/client.js:101:45)位于process.nextTick的Http2CallStream.emit(events.js:194:15)(/ Users /NewProject/node_modules/@grpc/grpc-js/build/src/call-stream.js:71:22)at process.internalTickCallback(internal / process / next_tick.js:70:11)code:3,details:'请求浏览器客户端域不安全:dialogflow.googleapis.com',metadata:Metadata {options:undefined,internalRepr:Map {'grpc-server-stats-bin'=> [Array]}}}   internalTickCallback(internal / process / next_tick.js:70:11)代码:3,详细信息:'请求浏览器客户端域不安全:dialogflow.googleapis.com',元数据:元数据{options:undefined,internalRepr:Map {'grpc- server-stats-bin'=> [Array]}}}   internalTickCallback(internal / process / next_tick.js:70:11)代码:3,详细信息:'请求浏览器客户端域不安全:dialogflow.googleapis.com',元数据:元数据{options:undefined,internalRepr:Map {'grpc- server-stats-bin'=> [Array]}}}  
    
        
沙发
+30

非常确定这是对话流服务的错误。这不是第一次面临一些问题的对话流。

板凳
+20

非常确定负载均衡器后面的服务器有问题。如果您多次尝试,有时请求可以通过。但它绝对应该是一个dialogflow api服务器问题。

是的,如果我们尝试多次获得回复。看起来像是对话框流服务器坏了。 - Sudheesh R 8月28日9:25

地板
0

这是Dialogflow方面的问题,他们的技术团队正在研究并解决它。然而,他们没有确切地说明实际问题是什么。

github问题也是如此。

0
votes
answers
49 views
+10

貓鼬填充不是爲我工作

0

我有這個架構用戶貓鼬填充不是爲我工作

var mongoose = require("mongoose"), 
    passportLocalMongoose = require("passport-local-mongoose"); 

mongoose.Promise = global.Promise; 

var userSchema = new mongoose.Schema ({ 
    username: {type: String, required: true, unique: true}, 
    password: {type: String}, 
    role: {type: String, required: true}, 
    confirmed: {type: Boolean, required: true, default: false}, 
    active: {type: Boolean, required: true, default: true}, 
    name: String, 
    created: {type: Date, default: Date.now}, 
    admin: {type: Boolean, default: false, required: true} 
}); 

userSchema.plugin(passportLocalMongoose); 

module.exports = mongoose.model("User", userSchema); 

而另一架構公司,其中客戶用戶數組:

var mongoose = require("mongoose"); 
mongoose.Promise = global.Promise; 

var companySchema = new mongoose.Schema ({ 
    name: {type: String, required: true, unique: true}, 
    created: {type: Date, default: Date.now}, 
    active: {type: Boolean, required: true, default: true}, 
    staff: [{ 
     id: { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: "User" 
     }, 
     username: String 
    }], 
    clients: [{ 
     id: { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: "User" 
     }, 
     username: String 
    }] 
}); 

module.exports = mongoose.model("Company", companySchema); 

我在我的路線下面的代碼,但用戶信息沒有被填充到公司對象,什麼是我做錯了?

// EDIT route 
router.get("/:company_id/edit", middleware.checkCompanyOwnership, function(req, res) { 
    Company.findOne({_id: req.params.company_id}).populate({path: 'clients'}).exec(function(err, company) { 
     if (err || !company) { 
      console.log(err); 
      req.flash("error", err.message); 
      res.redirect("/"); 
     } else { 
      console.log("Request to edit company."); 
      //console.log(company); 
      res.render("company/edit", {title: "Edit Company", company: company}); 
     } 
    }); 
}); 

這是,如果我的控制檯日誌公司什麼我得到:

{ _id: 5a070874b4292914444b6e06, 
    name: 'ABC', 
    __v: 1, 
    clients: 
    [ { username: '[email protected]', 
     _id: 5a070206616810129b5c876a } ], 
    staff: [], 
    active: true, 
    created: 2017-11-11T14:25:56.359Z } 

感謝您的幫助。

沙发
0
2

貴公司的模式應該是這樣的

var companySchema = new mongoose.Schema ({ 
    ... 
    staff: [{ type: mongoose.Schema.Types.ObjectId, ref: "User" }], 
    clients: [{ type: mongoose.Schema.Types.ObjectId, ref: "User" }] 
}); 

請參閱該文檔http://mongoosejs.com/docs/populate.html

0
votes
answers
18 views
+10

打破功能並看到錯誤信息

0

在路由器中,我通常使用req.json(object)來返回正確的結果。現在,在某些情況下,我需要返回的錯誤信息,例如打破功能並看到錯誤信息

router.post('/register', function (req, res, next) { 
    if (req.body.username === null || req.body.username === undefined) { 
     console.log("all fields please"); 
     // return res.status(400).json({ message: 'all fields please'}); 
     // res.send('all fields please') 
    } 

    console.log("not finished") 
} 

我試圖return res.status...res.send...,他們要麼沒有完成或打破了功能,或者無法顯示信息到控制檯。

有誰知道哪個是正確的方法來做到這一點?

+0

你試過'返回res.status'和'res.send'在一起? – wrangler

+0

不,無論是其中一個或其他... – SoftTimur

+0

返回將明顯打破功能.....什麼味精你在控制檯預測''不完成'??? – wrangler

沙发
0
0

return res.status(400).json({ message: 'all fields please' })確實有效。事情是不要忘記趕在前端:

return $http.post('/register', user).then(function (res) { 
     console.log("then: " + JSON.stringify(res.data)) 
    }).catch(function (res) { 
     console.log("catch: " + JSON.stringify(res.data.message)) 
    }) 
} 
0
votes
answers
42 views
+10

加載文件

0

正確isAuthenticated我想在我的快遞應用程序使用passportpassport-local加載文件

在我的主要應用程序,我加載了以下內容:

const session = require('express-session') 
const passport = require('passport') 
// configure passport 
// require('./config/passport')(passport) 
const auth = require('./routes/auth') 
const index = require('./routes/index') 

const app = express() 

// view engine setup 
app.set('views', path.join(__dirname, 'views')) 
app.set('view engine', 'pug') 
app.use(logger(process.env.LOG_ENV)) 
app.use(bodyParser.json()) 
app.use(bodyParser.urlencoded({ 
    extended: false, 
})) 
app.use(express.static(path.join(__dirname, '/../public'))) 
app.use(cookieParser()) 

app.use(session({ 
    secret: 'super-mega-hyper-secret', 
    resave: false, 
    saveUninitialized: true, 
})) 
app.use(passport.initialize()) 
app.use(passport.session()) 

passport.js配置文件看起來相當典型:

const passport = require('passport') 
const LocalStrategy = require('passport-local').Strategy 
const serviceAuth = require('../service/auth') 

    passport.serializeUser((user, done) => { 
    done(null, user.id) 
    }) 

    passport.deserializeUser(async (id, done) => { 
    const user = await serviceAuth.findById(id) 
    done(null, user) 
    }) 

    passport.use('local', new LocalStrategy({ 
    usernameField: 'username', 
    }, async(username, password, done) => { 
    const user = await serviceAuth.signin(username, password) 
    done(null, user) 
    })) 

在我的路線,我想避開哪些路線需要身份驗證:

const express = require('express') 

const router = express.Router() 
const utils = require('../util/utils') 

router.get('/', utils.isLogged(), (req, res) => { 
    res.render('dashboard') 
}) 

module.exports = router 

utils/utils.js文件夾我有中間件來引導,哪個用戶通過身份驗證。

const passportConfig = require('../config/passport') 

function isLogged(req, res, next) { 
    const auth = this.passportConfig.isAuthenticated() 
    if (req.auth) { 
    next() 
    } else { 
    res.redirect('/') 
    } 
} 

module.exports = { 
    isLogged, 
} 

不過,在這裏我得到以下錯誤:

const auth = this.passportConfig.isAuthenticated() 
           ^

TypeError: Cannot read property 'isAuthenticated' of undefined 

任何建議如何正確加載護照我utils/utils.js文件夾?

我很感謝你的回覆!

更新

請查找以下github repo,這表明最小的可行例子。

沙发
0
0

在你isLogged()功能,this關鍵字指function本身,因此this.passportConfigundefined。你應該做的只是使用:

const auth = passportConfig.isAuthenticated(); 

沒有this關鍵字。

0
votes
answers
36 views
+10

的Node.js的setTimeout方面的問題

0

我想一個模塊(節點8.9.0LTS)內的以下內容:的Node.js的setTimeout方面的問題

const someResponse = await ajaxService.post('/data/search', params) 
    const ms = 2000; 

    const intervalID = setInterval(function(){ 
    if(Object.keys(personDataResponse).length === 0){ 
     let url = `/api?searchRequestId=1111` 
     response = await ajaxService.get(url) 
    } 
    }, ms); 

    setTimeout(function() { 
     clearInterval(intervalID); 
    }, ms * 5); 

但我收到以下:

/path/to/project/project/api/router.js:27 
      response = await ajaxService.get(url) 
             ^^^^^^^^^^^ 

SyntaxError: Unexpected identifier 
    at createScript (vm.js:80:10) 
    at Object.runInThisContext (vm.js:139:10) 
    at Module._compile (module.js:599:28) 
    at Object.Module._extensions..js (module.js:646:10) 
    at Module.load (module.js:554:32) 
    at tryModuleLoad (module.js:497:12) 
    at Function.Module._load (module.js:489:3) 
    at Module.require (module.js:579:17) 
    at require (internal/module.js:11:18) 
    at Object.<anonymous> (/path/to/project/project/app.js:16:8) 

有什麼建議? ajaxService.get()在setTimeout之外是可訪問的。

+2

'setInterval'的意圖是在這裏?看起來你每兩秒運行一次請求五次,然後停止它。 – JLRishe

沙发
0
3

您不能在非異步函數中使用await。因此最簡單的解決辦法是給你的函數更改爲async

       // v--- here 
const intervalID = setInterval(async function() { 
    if(Object.keys(personDataResponse).length === 0){ 
    let url = `/api?searchRequestId=1111` 
    response = await ajaxService.get(url) 
    } 
}, ms); 
板凳
0
0

您是否嘗試過在這裏使用單引號?

let url = '/api?searchRequestId=1111'

你不會需要回剔反正如果你沒有任何串聯變量的字符串。

0
votes
answers
18 views
+10

如何旋轉文本然後在graphicsmagick中繪製?

0

如何旋轉文本然後在graphicsmagick中繪製? 這是一個簡單的問題,但我從一個小時以來就無法從API瞭解它。如何旋轉文本然後在graphicsmagick中繪製?

幫助將appriciated,謝謝。 我正在使用gm,但從命令行執行它也足夠了。

此外還有一個關於這個問題的公開問題。 https://github.com/aheckmann/gm/issues/660

如果我們不能用graphicsmagick做到這一點,OpenCV或Imagemagick的替代方案是可能的。

+0

你能更具體嗎?旋轉文本並繪製??*什麼**? **哪裏**?也許舉個例子吧。 –

沙发
0
1

我同意Mark Setchell。這個問題不明確。在ImageMagick中,您可以通過多種方式繪製旋轉文字。 -annotate函數將通過它的參數來做到這一點。您還可以使用標籤創建一個新的文本圖像:然後旋轉並在背景圖像上進行組合。見http://www.imagemagick.org/Usage/text/http://www.imagemagick.org/script/command-line-options.php#annotate

輸入:

enter image description here

convert logo.jpg -font Arial -pointsize 64 -fill red -gravity center -annotate 20x20+0+0 "TESTING" logo_test.jpg 

或交替使用-draw

convert logo.jpg -font Arial -pointsize 64 -fill red -gravity center -draw "rotate 20 text 0,0 'TESTING'" logo_test2.jpg 

enter image description here

對不起,我不知道GraphicsMagick工具,但它應該有一個類似的操作符來註釋,也許是同一個名字。

+0

在GraphicsMagick的node.js中我找到了這個函數'.draw([「rotate -14 text 0,0」+ yourText])''''''''''''''''''''''''這個答案指出我找到了這個功能,這個功能在之前沒有看到過。謝謝。 –

+0

如果您將使用變量,那麼您的文本當然應該包含轉義或單引號。恩。 'var yourText =「」示例文本「」' –

0
votes
answers
42 views
+10

節點js JWT獲取當前用戶

0

我使用節點JS,JWT和Sequelize進行API身份驗證,並使用React JS/redux作爲前端部分來處理應用程序。我成功實現了應用程序的登錄/註銷/註冊部分,但現在我需要訪問current_user登錄。節點js JWT獲取當前用戶

我把一個JWT放在localStorage中,但我想要訪問用戶ID ,用戶電子郵件,用戶名和更多關於我當前登錄用戶的信息。

我應該使用Cookie嗎? LocalStorage?或者我應該在我的API中創建一個currentUser方法?

我有點失落,如果有人能幫我找到一些有用的資源或建議!

謝謝!

沙发
0
1

在LocalStorage中存儲令牌沒問題。如果您需要獲取用戶詳細信息,請在您的API中創建一個端點,如getUser。然後,您可以使用jwt.decode(accessToken, JWT SECRET HERE),並假設accessToken有效,返回解碼值(這將是您的用戶)。

板凳
0
1

如果您將該信息放入JWT的有效負載中,則無需在服務器上進行解碼或不需要祕密即可獲取該信息,因此可以將該令牌放置在LocalStorage中以供任何時候使用。根據規範,智威湯遜是<headerINfo>.<payloadInfo>.<signature>。因此,在客戶端,你可以做:

// given a payload object of { username: 'bob', userid: 1, email: '[email protected]' } 
const tokenParts = token.split('.'); 
const encodedPayload = tokenParts[1]; 
const rawPayload = atob(encodedPayload); 
const user = JSON.parse(rawPayload); 
console.log(user.username); // outputs 'bob' 

顯然,這種信息是提供給有權限訪問令牌的任何客戶端,讓你只想把東西在有效載荷這對確定。

0
votes
answers
37 views
+10

使用nvm卸載node.js的當前活動版本

0

在Ubuntu 16.04上,我錯誤地使用root來安裝nvm,然後通過nvm安裝node.js 8.8.1。我也用nvm alias default 8.8.1,認爲它會糾正我的錯誤。使用nvm卸載node.js的當前活動版本

現在我想:

  1. 刪除默認別名
  2. 卸載節點8.8.1
  3. 卸載NPM 4.8.5,它與節點
  4. 卸載NVM
  5. 來了正確地爲正確的非sudo用戶重新安裝所有內容

它看起來像我已經與第一部分成功:

# nvm unalias default 
Deleted alias default - restore it with `nvm alias "default" "8.8.1"` 

但NVM拒絕卸載節點8.8.1,因爲它是唯一安裝的版本:

# nvm uninstall 8.8.1                                
nvm: Cannot uninstall currently-active node version, v8.8.1 (inferred from 8.8.1). 

我猜測我首先需要取消激活節點8.8.1,但我看不到nvm --help的輸出中會出現這種情況。

在重新正確安裝所有內容之前,需要執行哪些步驟才能從機器中完全刪除node.js,npm和nvm?

沙发
0
2

第一類型

$ nvm deactivate 

然後輸入

$ nvm uninstall 8.8.1 
0
votes
answers
43 views
+10

NodeJS + RxDB + Electron(持久數據)

0

我一直在玩PouchDB(使用express-pouchdb和pouchdb-find)一段時間,並意識到我需要通過Rxjs爲我的Angular 5/Electron應用程序。NodeJS + RxDB + Electron(持久數據)

對於我目前的設置,我跑express-pouchdb建立持久性本地化PouchDB,然後在角度我有以下幾點:

@Injectable() 
export class PouchdbService { 
    private _localdb = 'http://localhost:3000/main'; 
    private _pouchDb: any; 

    constructor() { 
    this._pouchDb = new PouchDB(this._localdb); 
    PouchDB.plugin(PouchDBFind); 

    this.createIndexes(); 
    } 

    private createIndexes(): void { 
    this._pouchDb.createIndex({ 
     index: { 
      fields: [ 'tags' ] 
     } 
    }); 

    this._pouchDb.createIndex({ 
     index: { 
      fields: [ 'date' ] 
     } 
    }) 

    this._pouchDb.createIndex({ 
     index: { 
      fields: [ 'title' ] 
     } 
    }); 
    } 

此通過_localdb屬性提供我的服務將快速應用。我可以保留PouchDB快速應用程序,只需通過重寫我的服務並重構代碼就可以通過RxDB調用它。但是,我想我需要在每個集合上撥打sync

雖然,我寧願刪除快速應用程序,如果有一種方式直接與RxDB持久運行。

沙发
0
1

我結束了使用websql adapter這顯然存儲應用程序負載之間的信息和下降express-pouchdb

0
votes
answers
45 views
+10

無論我使用哪條路線,Express都加載了我的React應用程序,出了什麼問題?

0

我試圖在/物種中使用JSON,但是,無論我使用什麼路線,express都似乎總是加載反應應用程序。任何人都可以弄清楚什麼是錯的?這是我的server.js文件:無論我使用哪條路線,Express都加載了我的React應用程序,出了什麼問題?

const app = require('express')(); 
const cors = require('cors') 
const bodyParser = require('body-parser'); 
const path = require('path'); 
const express = require('express'); 

//Enable CORS app.use(cors()); 

const species = [ { 
    name: 'mallard' } ]; 

const sightings = [ { 
    id: '1', 
    species: 'gadwall', 
    description: 'All your ducks are belong to us', 
    dateTime: '2016-10-01T01:01:00Z', 
    count: 1 }, { 
    id: '2', 
    species: 'lesser scaup', 
    description: 'This is awesome', 
    dateTime: '2016-12-13T12:05:00Z', 
    count: 5 } ]; 

//Enable CORS app.use((req, res, next) => { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); 

app.use(bodyParser.json()); 

app.get('/sightings', (req, res) => { 
res.json(sightings); }); 

app.post('/sightings', (req, res) => { 
req.body.id = (sightings.length + 1).toString(); 
sightings.push(req.body); 
res.json(req.body); }); 

app.get('/species', (req, res) => { res.json(species); }); 


app.use(express.static(path.resolve(__dirname, './react-front/build'))); 

app.get("*", (req, res) => { response.sendFile(path.resolve(__dirname, './react-front/build', 'index.html')); }); 

const port = process.env.PORT ? process.env.PORT : 8081; const server 
= app.listen(port,() => { 
    console.log("Server listening port %s", port); }); 
+0

歡迎來到Stack Overflow!有關您嘗試完成什麼/爲什麼以及目前嘗試完成的更多信息將對您有所幫助。有關於發佈問題的[一些提示](https://stackoverflow.com/help/how-to-ask)。 – ashleedawg

+0

看起來您正在重複發送此行上的靜態資產:app.get('*',...)。嘗試沒有它。 – Splitty

+0

@Splitty實際上並沒有改變任何東西。它仍然在任何路線上呈現反應應用程序。我試圖將信息從本地主機上的jsons呈現給反應應用程序。 – ejexet

沙发
0
0

我想你可以通過分離你想要使用React的路線來解決這個問題。

比如,你可以寫,你想使用反應,將其導出這些應用了新的Express模塊??:

const express = require('express'); 

const router = express.Router(); 

// Use 'react-front/build' for router, but not 
// your main Express application. 
router.use(express.static(path.resolve(__dirname, './react-front/build'))); 

router.get('/something', function(req, res) { 
    // Do something here 
}); 

module.exports = router; 

然後加入類似以下內容您的明示應用

// Require the module 
const reactRouter = require('./path/to/router'); 

app.use(reactRouter);