fs.readFileSync() 函数无法按预期工作 [英] fs.readFileSync() function doesn't work as expected
问题描述
以下代码未按预期工作:
The following code doesn't work as expected:
var fs = require('fs');
var PeerServer = require('peer').PeerServer;
var server = PeerServer({
port: 9000,
path: '/peerjs',
ssl: {
key: fs.readFileSync('../certificates/key.pem', 'utf8'),
cert: fs.readFileSync('../certificates/cert.pem', 'utf8')
}
});
它返回以下错误:
/Users/mzn/.meteor/packages/meteor-tool/.1.6.0_1.i59qpv.ylxp8++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:280 W20180606-15:08:29.566(4)?(STDERR)抛出(前);W20180606-15:08:29.566(4)?(STDERR) ^ W20180606-15:08:29.566(4)?
/Users/mzn/.meteor/packages/meteor-tool/.1.6.0_1.i59qpv.ylxp8++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:280 W20180606-15:08:29.566(4)? (STDERR) throw(ex); W20180606-15:08:29.566(4)? (STDERR) ^ W20180606-15:08:29.566(4)?
(STDERR) W20180606-15:08:29.567(4)?(STDERR) 错误:ENOENT:没有
(STDERR) W20180606-15:08:29.567(4)? (STDERR) Error: ENOENT: no such
文件或目录,打开'../certificates/key.pem'
file or directory, open '../certificates/key.pem'
W20180606-15:08:29.567(4)?(STDERR) 在 Object.fs.openSync(fs.js:646:18) W20180606-15:08:29.567(4)?(STDERR) 在
W20180606-15:08:29.567(4)? (STDERR) at Object.fs.openSync (fs.js:646:18) W20180606-15:08:29.567(4)? (STDERR) at
Object.fs.readFileSync (fs.js:551:33) W20180606-15:08:29.568(4)?
Object.fs.readFileSync (fs.js:551:33) W20180606-15:08:29.568(4)?
(STDERR) 在 main.js (chat/server/main.js:15:11)
(STDERR) at main.js (chat/server/main.js:15:11)
W20180606-15:08:29.568(4)?(STDERR) 在文件评估
W20180606-15:08:29.568(4)? (STDERR) at fileEvaluate
(packages/modules-runtime.js:343:9) W20180606-15:08:29.568(4)?
(packages/modules-runtime.js:343:9) W20180606-15:08:29.568(4)?
(STDERR) at require (packages/modules-runtime.js:238:16)
(STDERR) at require (packages/modules-runtime.js:238:16)
W20180606-15:08:29.569(4)?(STDERR) 在
W20180606-15:08:29.569(4)? (STDERR) at
/Users/mzn/Desktop/All/chat/.meteor/local/build/programs/server/app/app.js:537:1
/Users/mzn/Desktop/All/chat/.meteor/local/build/programs/server/app/app.js:537:1
W20180606-15:08:29.569(4)?(STDERR) 在 infos.forEach.info
W20180606-15:08:29.569(4)? (STDERR) at infos.forEach.info
(/Users/mzn/Desktop/All/chat/.meteor/local/build/programs/server/boot.js:414:13)
(/Users/mzn/Desktop/All/chat/.meteor/local/build/programs/server/boot.js:414:13)
以下是我的文件结构
我在 main.js
我尝试了此处发布的解决方案,但没有为我解决.
I tried the solutions posted here but it did not solve it for me.
我在这里做错了什么?
推荐答案
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
var base = process.env.PWD;
var fs = Npm.require('fs');
var PeerServer = require('peer').PeerServer;
var server = PeerServer({
port: 9000,
path: '/peerjs',
ssl: {
key: fs.readFileSync(base + '/chat/certificates/key.pem', 'utf8'),
cert: fs.readFileSync(base + '/chat/certificates/cert.pem', 'utf8')
}
});
});
}
感谢@Kevin 简单回答这里.
Credit to @Kevin Simple answer here.
希望能帮您解决
这篇关于fs.readFileSync() 函数无法按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!