首页 \ 问答 \ `npm start`抱怨“缺少脚本:启动”,没有运行节点(`npm start` complains “missing script: start”, without running node)

`npm start`抱怨“缺少脚本:启动”,没有运行节点(`npm start` complains “missing script: start”, without running node)

我的NPM包中有以下文件:

package.json

{
  "name": "npm-start",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

index.js

console.log('Hello world!');

当我尝试运行npm start ,收到一条错误消息:

> npm start
npm ERR! missing script: start

好的,这是真的:我在"scripts"对象中没有"start"属性。 但NPM的CLI文档声称这是关于npm start

如果在"scripts"对象上未指定"start"属性,则它将运行node server.js

为什么NPM让我失望? 是不是应该在这种情况下调用node ? 我错过了什么吗? (当然,手动调用节点工作正常)。

如果相关:

> npm -version
5.3.0

I have the following files in my NPM package:

package.json:

{
  "name": "npm-start",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

index.js

console.log('Hello world!');

When I try to run npm start, I get an error message:

> npm start
npm ERR! missing script: start

Okay, it's true: I don't have a "start" property in "scripts" object. But NPM's CLI Documentation claims this about npm start:

If no "start" property is specified on the "scripts" object, it will run node server.js.

Why is NPM failing me? Isn't it supposed to invoke node in this scenario? Am I missing something? (Of course, manually invoking node works fine).

In case it's relevant:

> npm -version
5.3.0

原文:https://stackoverflow.com/questions/47219615
更新时间:2022-09-01 15:09

最满意答案

我发现它,问题不在于Multi模块Graldle,Spring引导或Oauth2相关。 实际上,这是由于Gradle的src集合配置,其中Java应该位于Java src集文件夹中,而Kotlin位于Java src集文件夹中:

sourceSets {
    main.java.srcDirs += 'src/main/java'
    main.kotlin.srcDirs += 'src/main/kotlin'
}

正如Will Humphreys在他上面的评论中所说的那样,IntelliJ需要所有源代码集并运行该应用程序。 但是,通过Gradle构建jar时,这些源代码集更加严格。 我在我的Kotlin src集合中有一个Java文件,这对IntelliJ来说没有问题。 但是由Gradle创建的jar考虑到了build.gralde文件中定义的源代码集,它们更严格。

我用下面的代码找到了我的缺失bean问题:

@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    return args -> {
        System.out.println("Let's inspect the beans provided by Spring Boot:");

        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.println(beanName);
        }

    };
}

我错过的Bean被称为AuthenticationController ,它是一个@RestController ,并且对于我的验证代码至关重要。


I found it, the problem was not Multi module Graldle, Spring boot, or Oauth2 related. In fact it was due to a src set config of Gradle, where Java was supposed to be in a Java src set folder, and Kotlin in a Java src set folder:

sourceSets {
    main.java.srcDirs += 'src/main/java'
    main.kotlin.srcDirs += 'src/main/kotlin'
}

As Will Humphreys stated in his comment above, IntelliJ takes all source sets, and runs the app. However, when building the jar via Gradle, these source sets are stricter. I had a Java file in my Kotlin src set, which is no problem for IntelliJ. But the jar created by Gradle takes into account the source sets as defined in the build.gralde file, which are stricter.

I found my missing bean issue with the code below:

@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    return args -> {
        System.out.println("Let's inspect the beans provided by Spring Boot:");

        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.println(beanName);
        }

    };
}

The Bean I missed was called AuthenticationController, which is a @RestController, and kinda crucial for my authentication code.

相关问答

更多

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)