使用"npm run build"时出现"npm ERR!missing script: build"错误

65

我在运行Windows 10时,如何解决这个错误?

当我尝试在cmd上运行npm run build时,出现了这个错误。

C:\Users\anai_> npm run build
npm ERR! missing script: build

这里是运行日志

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'build' ]
2 info using npm@5.5.1
3 info using node@v9.1.0
4 verbose config Skipping project config: C:\Users\anai_/.npmrc. (matches userconfig)
5 verbose stack Error: missing script: build
5 verbose stack     at run (C:\Program Files\nodejs\node_modules\npm\lib\run-script.js:151:19)
5 verbose stack     at C:\Program Files\nodejs\node_modules\npm\lib\run-script.js:61:5
5 verbose stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:115:5
5 verbose stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:402:5
5 verbose stack     at checkBinReferences_ (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:357:45)
5 verbose stack     at final (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:400:3)
5 verbose stack     at then (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:160:5)
5 verbose stack     at ReadFileContext.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:332:20)
5 verbose stack     at ReadFileContext.callback (C:\Program Files\nodejs\node_modules\npm\node_modules\graceful-fs\graceful-fs.js:78:16)
5 verbose stack     at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:437:13)
6 verbose cwd C:\Users\anai_
7 verbose Windows_NT 10.0.15063
8 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build"
9 verbose node v9.1.0
10 verbose npm  v5.5.1
11 error missing script: build
12 verbose exit [ 1, true ]

虽然错误提示未找到脚本构建,但我已将构建脚本放在了我的 package.json 文件中。

{
  "name": "es6",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "build": "webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^3.8.1"
  }

}

这是我的 webpack.config.js 文件

module.exports = {
  entry: ['./app/index.js'],
  output: {
    path: './build',
    filename: 'bundle.js'

  }
}
为什么会出现这个错误,该如何解决问题?

1
你是在项目目录下运行该命令吗? - Sagar Devanga
7个回答

6

首先检查您的根目录中是否有 .babelrc 文件。

如果您已经有了 .babelrc 文件

请在您的 package.json 文件中添加以下内容

"scripts": {
    "dev": "webpack --config=Scripts/config/webpack.dev.js --watch",
    "build": "webpack --config=Scripts/config/webpack.prod.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

3
  1. Try setting the output.path in webpack.config.js to an absolute path

    module.exports = {
        entry: ['./app/index.js'],
        output: {
            path: __dirname + '/build',
            filename: 'bundle.js'
        }
    }
    

    I don't have Windows (on Linux) but with node 8.16.0 and npm 6.4.1, replicating your package.json and webpack.config.js, I got the following error:

    Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
     - configuration.output.path: The provided value "./build" is not an absolute path!
        -> The output directory as **absolute path** (required).
    

    See more on the absolute-path stuff here

  2. Since you are on Windows, check your file line-endings (CRLF vs LF). If you've cloned code from another place, depending on your git config, it might have carried over different line endings. You can quickly check line endings in the lower-right corner of VSCode. Visual Studio Code File Indicators

以下是我模拟你的设置所执行的步骤:

  1. copied your package.json and webpack.config.js
  2. run npm i (or npm install)
  3. run npm run build - received the invalid configuration error noted above
  4. changed the output.path to an absolute path concatenating with __dirname (not sure if Windows is different...)
  5. reran npm run build and got:
    ERROR in multi ./app/index.js
    Module not found: Error: Can't resolve './app/index.js' in '/tmp/es6'
    @ multi ./app/index.js
    
  6. ran mkdir app && touch app/index.js (in linux, creates folder 'app' and then creates the index.js file inside the app folder)
  7. reran npm run build and success:

    > es6@1.0.0 build /tmp/es6
    > webpack
    
    Hash: 0578ec98b09c215702c6
    Version: webpack 3.12.0
    Time: 34ms
        Asset     Size  Chunks             Chunk Names
    bundle.js  2.59 kB       0  [emitted]  main
    [0] multi ./app/index.js 28 bytes {0} [built]
    [1] ./app/index.js 0 bytes {0} [built]
    

2
您在部署脚本中加入了"npm run build && gh-pages -d build",但是当运行npm run build时,您需要告诉npm要执行什么操作。将build配置为构建项目所需的任何命令。
由于您正在使用webpack,我假设它应该是webpack --config webpack.conf.js。对于gulp,是gulp build;对于TypeScript,是tsc -p tsproject.json等等。这取决于您的项目。
您可以在这里查看完整的说明:https://github.com/npm/npm/wiki/Troubleshooting#a-brief-note-on-the-built-in-windows-configuration

你说的部署脚本是什么意思?我那里没有部署脚本。 - Anaizing
1
尝试使用@joseh-charles建议的命令替换您的构建命令'build': ' webpack --config webpack.conf.js' - dommmm

2
检查一下你的package.json文件中是否有build字段,如果没有则在scripts中添加它。
 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "watch": "ts-node-dev --respawn src/Union.ts",
    "serve": "ts-node-dev src/function.ts",
    "build": "tsc"
  },

1

另外,删除空的 UI 源文件夹可能会有所帮助(或者你通常存储 package-lock.json 等文件的位置)。例如,在切换不同分支时,某个分支已经删除了 UI 源文件夹,但是 Git 不会删除空文件夹。


1

包括 "build": "webpack --config webpack.conf.js" 在内的尝试都没有成功!

我尝试了 webpack --config webpack.config.js,这个命令运行良好,但在升级到 4.41.2 版本后使用一段时间后,出现了问题。

"scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
      "watch": "webpack --watch",
      "build": "webpack"
    },

这对我很有帮助。确保版本正确非常重要,因为我正在使用webpack 4.41.2。


-3

我也遇到了同样的问题,但后来我意识到我忘记安装 Angular CLI 了。

所以我做了以下步骤来解决问题:

  1. 我在我的 npm 安装文件夹中执行了以下命令:

npm install -g @angular/cli

  1. 然后我创建了一个新的 Angular 项目,ng new project-name ,

之后我就能够执行 npm run build 命令了,

希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接