npm run build命令报错并提示找不到package.json

1.我在F:ES6babel目录下面新建了一个.babelrc文件,尝试了ES6的转码方法,将用ES6的语法写的example.js转成了es2015语法的compiled.js没有问题。如图:
图片描述

2.我是跟着阮一峰老师的ES6入门那本书实现的,到了下图出现了问题。
图片描述

3.$npm install --save-dev babel-cli安装成功,但是发现我的目录下面没有package.json文件,但是有一个package-lock.json文件。而且执行$ npm run build的时候提示提下错误:
图片描述

问题:请问这个应该如何解决呢?而且以后完成了转码为什么还要执行$ npm run build?第一次接触Node环境下的这种写法,看阮老师的这本书看得很吃力,短短一节遇到好多问题,都是在网上查找慢慢一点点弄通。谢谢各位指点~


谢谢大家的回答,我把package-lock.josn改成了package.json,并按照书上给package.json添加了:
"devDependencies" : {

"babel-cli" : "^6.0.0"
},

"scripts" : {

"build" : "babel src -d lib"

},
但是执行npm run build还是有错:
图片描述


多谢各位,问题解决了。结合了多位优秀的答案,我发现是我理解错误,压根就没有理解 "scripts" : {

"build" : "babel src -d lib"

},这句话的意思。babel src -d lib的意思是将文件src下面所有的文件转码并保存到lib里面。所以src文件要自己建,并在里面放js文件。如何执行npm run build,会自动生成lib文件夹以及里面转码后的js文件。

如果你又新建要新建src2文件并转码并保存到lib2里面的话,直接把"scripts" : {

"build" : "babel src -d lib"

}改成"scripts" : {

"build" : "babel src2 -d lib2"

}就可以了。和mybatis手动修改xml配置文件的表名以及保存路径自动生成domain,mapping,dao层差不多的意思。
运行npm run build
转码src文件到lib文件中
转码成功的js文件

*关于没有package.json文件的问题,我根据有位答主的方法:npm init,如何会提示你输入各种属性值,只要按回车就可以了。最后yes就可以生成package.json。

可能还会有一些和我一样对node环境下的es6不是很懂的人会越到类似的问题,所以写下来供大家参考,谢谢各位答主~

阅读 14.8k
4 个回答

试一下:

npm init

一直回车就好,然后再试试npm run build

package-lock.json改成package.json,npm run build实际上执行的是你package.json里的scripts里的build,相当于运行的是babel src -d lib

确实是少了package.json,在项目里面一般是有package.json和package-lock.json的。
package-lock.json是npm5的新特性,这个文件是保证你的package.json文件中所有的安装包版本和安装包版本所依赖的二级安装包的版本不会发生变化。
所以说你的项目确实是少了package.json,看看你有没有误删或者遗漏了,项目没有package.json来控制依赖的话,是不完整的

首先你得知道npm run build是什么意思,npm run是npmscript的执行入口,输入npm run xxx,就相当于执行package.json的scripts中xxx属性的内容。

例如你运行的是:npm run build,再看看你的package.json中的scripts属性。

"scripts": {
    "build": "babel src -d lib"
}

运行npm run build,与直接在命令行运行babel src -d lib效果一样。

所以两个解决方案:
1、直接命令行运行babel src -d lib
2、创建正确的package.json文件。

推荐第二种

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进