fs.readFileSync()函数没有按预期工作

时间:2018-06-06 11:17:08

标签: node.js meteor

以下代码未按预期工作:

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)throw(ex);   W20180606-15:08:29.566(4)? (STDERR)^ W20180606-15:08:29.566(4)?

     

(STDERR)W20180606-15:08:29.567(4)? (STDERR)错误:ENOENT:没有这样的

     

文件或目录,打开' ../ certificates / key.pem'

     

W20180606-15:08:29.567(4)? (STDERR)在Object.fs.openSync上   (fs.js:646:18)W20180606-15:08:29.567(4)? (STDERR)

     

Object.fs.readFileSync(fs.js:551:33)W20180606-15:08:29.568(4)?

     main.js上的

(STDERR)(chat / server / main.js:15:11)

     

W20180606-15:08:29.568(4)? (STDERR)在fileEvaluate

     

(packages / modules-runtime.js:343:9)W20180606-15:08:29.568(4)?

     

(STDERR)at require(packages / modules-runtime.js:238:16)

     

W20180606-15:08:29.569(4)? (STDERR)

     

/Users/mzn/Desktop/All/chat/.meteor/local/build/programs/server/app/app.js:537:1

     

W20180606-15:08:29.569(4)? (STDERR)at infos.forEach.info

     

(/用户/ MZN /桌面/全部/聊天/ .meteor /本地/建造/方案/服务器/ boot.js:414:13)

以下是我的文件结构

file structure

我在fs.readFileSync('../certificates/key.pem', 'utf8')

中使用main.js

我尝试了解决方案posted here,但它并没有为我解决。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

$ find /home/hadoop -name '*.jar' -exec grep -Hls MRAppMaster {} \;
/home/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-app-3.1.0-sources.jar
/home/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-app-3.1.0-test-sources.jar
/home/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-app-3.1.0.jar 

归功于@Kevin简单回答here

希望它会为你解决

答案 1 :(得分:0)

fs documentation中所述,

  

字符串表单路径被解释为标识绝对或相对文件名的UTF-8字符序列。相对路径将相对于process.cwd()指定的当前工作目录进行解析。

错误表示当前工作目录不是main.js所在的目录chat/server

如果要从当前模块路径解析这些文件的路径,则应该是:

fs.readFileSync(path.join(__dirname, '../certificates/key.pem'), 'utf8')