在读node.js开发指南,说到package,书中举例package.json可以这么写:{ "main" : ‘./lib/subIndex.js’}。 但是,我运行的时候提示错误,一直找不到原因。。。提示如下: module.js:117 throw e; ... Unexpected taken 锘?
类似于这样,求大神帮破。
文件编码问题,是用utf-8无bom或者ansi格式就正常运行了。如果utf-8带bom,便会报错。
试着去读了几行源码,看到module.js里面这么读取package.json文件: var jsonPath = path.resolve(requestPath, ‘package.json’); var json = fs.readFileSync(jsonPath, ‘utf8’); 然后,buffer中有utf-8和uft8两个参数处理方案,似乎如果传入参数’utf-8’会被转为’utf8’。 那么,node就不会读取带bom的utf-8文件吗?
是的,你说得对,应该用双引号。重新看了一下标准,value在字符串的时候要求双引号,其它值是不能加双引号。比如,如果{"abc":"true"}和{"abc":true}都是正确的,但是格式化出来是不一样的对象。但是,我这个的问题还是没有解决。。。
我直接去复制了node官网的package.json的例子,{ "name" : "some-library","main" : "./lib/some-library.js" },然后按照名字和路径改了lib下的js,还是报同样的错误。。。
@chuguixin 感觉... 还可以详细点不... 网址都没给啊, 还有什么系统什么编辑器? 你的报错真是这样的? 出来中文了?
Unexpected taken 锘?
补充一下,在windows 下 utf 8 如果用记事本修改...的话...会导致文件出现你所说的情况,然后很多时候不可用...例如gradle 也有这个问题...所以,我现在都不敢用记事本修改utf8文件...