【问题标题】:npm start how to specify start file other than index.jsnpm start 如何指定 index.js 以外的启动文件
【发布时间】:2018-09-19 02:57:16
【问题描述】:

我运行 create-react-app 然后切换到目录并运行 npm start。只是想知道如何指定一个不同于 index.js 的文件在服务器上启动

这是我的 package.json 文件:

{
 "name": "todo",
 "version": "0.1.0",
 "private": true,
 "dependencies": {
   "react": "^16.2.0",
   "react-dom": "^16.2.0",
   "react-scripts": "1.1.1"
 },
 "scripts": {
   "start": "react-scripts start",
   "build": "react-scripts build",
   "test": "react-scripts test --env=jsdom",
   "eject": "react-scripts eject"
 }
}

我尝试过改变:

"start": "react-scripts start",

"start": "node index.js",  or  "start": "node ./src/index.js",

但那些不起作用

【问题讨论】:

    标签: reactjs server npm-start


    【解决方案1】:

    查找并编辑 package.json 文件。例如:

    {
      "name": "build",
      "version": "0.0.1",
      "scripts": {
        "start": "node different-file.js"
      }
    }
    

    【讨论】:

    • 添加启动 node new-file.js 时的错误,以便我可以帮助您
    • @Ignacio 我也遇到了这个问题。
    • 它返回的错误是什么?我在所有项目中都使用"scripts": {"start": "node server.js"} 没有问题
    【解决方案2】:

    目前还没有理由在 react 中运行不同的 file.js。所以你需要通过命令弹出你的反应应用程序

    npm run eject
    

    通过运行它,您将完全控制您的项目。然后你需要在你的 config/paths.js 中修改一些代码

    module.exports = {
      dotenv: resolveApp('.env'),
      appPath: resolveApp('.'),
      appBuild: resolveApp(buildPath),
      appPublic: resolveApp('public'),
      appHtml: resolveApp('public/index.html'),
      //appIndexJs: resolveModule(resolveApp, 'src/index'),
      appIndexJs: resolveModule(resolveApp, 'src/'+ process.argv[process.argv.length-1]),
      appPackageJson: resolveApp('package.json'),
      appSrc: resolveApp('src'),
      appTsConfig: resolveApp('tsconfig.json'),
      appJsConfig: resolveApp('jsconfig.json'),
      yarnLockFile: resolveApp('yarn.lock'),
      testsSetup: resolveModule(resolveApp, 'src/setupTests'),
      proxySetup: resolveApp('src/setupProxy.js'),
      appNodeModules: resolveApp('node_modules'),
      swSrc: resolveModule(resolveApp, 'src/service-worker'),
      publicUrlOrPath,
    };
    

    记下以下几行:

    //appIndexJs: resolveModule(resolveApp, 'src/index'),
    appIndexJs: resolveModule(resolveApp, 'src/'+ process.argv[process.argv.length-1]),
    

    src/index 意味着 npm start 将使用 src/index.js 运行您的应用程序。因此,通过更改代码,您可以传递带有新文件名的参数,例如

    npm start -- foo
    

    因此,您的应用程序将使用 src/foo.js 中的新文件运行。 通常,您的论点是最后一项。如果代码不起作用,您可以尝试通过

    打印所有参数
    // print process.argv
    process.argv.forEach(function (val, index, array) {
      console.log(index + ': ' + val);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-22
      • 2020-07-13
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 2017-02-16
      相关资源
      最近更新 更多